Python容器专题 - 元组(tuple)

简介: Python容器专题 - 元组(tuple)

Python容器专题 - 元组(tuple)


1 元组用法

1.2 创建元组:

tuple1 = ()          # 创建一个空元组
tuple2 = (1, 2)      # 通过列举成员直接创建一个一维元组
tuple3 = ((1,2,3),(4,5,6),(7,8,9))  # 通过列举成员直接创建一个二维元组
tuple4 = tuple([1,2,3])             # 通过强制类型转换将列表转换为元组(也可以是其它支持的结构)
tuple5 = 1, 2, '3','4', 5           # 创建序列甚至可以不写小括号,且其成员支持任意类型
tuple6 = tuple4, (1, 2, 3, 4, 5)
print(tuple1,'\n',tuple2,'\n',tuple3,'\n',tuple4,'\n',tuple5,'\n',tuple6)

Out[]:

() 
(1, 2) 
((1, 2, 3), (4, 5, 6), (7, 8, 9)) 
(1, 2, 3) 
(1, 2, '3', '4', 5) 
((1, 2, 3), (1, 2, 3, 4, 5))

1.3 索引元组与反索引:

1.3.1 索引 - 获取元组中的元素

a_tuple = tuple(range(10))
t_3 = a_tuple[2]      # a_tuple的第3个元素
t_36 = a_tuple[2:6]    # a_tuple的第3个元素到第6个元素构成的子元组
print(a_tuple, '\n',t_3 ,'\n',t_36)

Out[]:

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) 
 2 
 (2, 3, 4, 5)

1.3.2 反索引 - 获取元素首次出现时的索引号

a_tuple = 9,2,'G',7,'A',1,[0,1],'3',1,6,3,'B'
index_A = a_tuple.index('A')
print('字符"A"在元组a_tuple中首次出现的索引为:', index_A )

Out[]:

1在元组a_tuple中出现的次数为: 2
字符"A"在元组a_tuple中首次出现的索引为: 4

1.4 统计元组

a = (6,4,7,8,9,2,4)
len(a)                      # 获取元组a中的元素个数,结果为 7
max(a)                      # 求元组a中的最大值,结果为 9
min(a)                      # 求元组a中的最小值,结果为 2

1.5 元素存在性

a = ("老虎","狮子","豹子","袍子","猴子","猩猩","狗熊")
"北极熊" in a               # 判断某元素是否在元组a中,结果为 False
“"猴子" in a                # 结果为 True
"袍子" not in a             # 结果为 False

1.7 删除元组

a = ()
del a

2. 元组与列表的异同

元组(tuple)是不可变序列类型,而列表(list)是可变序列,不可变序列类型和可变序列区别如下:

不可变序列类型

  • 不可变序列类型普遍实现而可变序列类型未实现的唯一操作就是对 hash() 内置函数的支持。
  • 这种支持允许不可变类型,例如 tuple 实例被用作 dict 键,以及存储在 set 和 frozenset 实例中。
  • 尝试对包含有不可哈希值的不可变序列进行哈希运算将会导致 TypeError。

可变序列类型

  • 以下表格中的操作是在可变序列类型上定义的。 collections.abc.MutableSequence ABC 被提供用来更容易地在自定义序列类型上正确实现这些操作。
  • 表格中的 s 是可变序列类型的实例,t 是任意可迭代对象,而 x 是符合对 s 所规定类型与值限制的任何对象 (例如,bytearray 仅接受满足 0 <= x <= 255 值限制的整数)。

3. 元组推导式

3.1 通过推导式获得元组

我们在学习列表(list)时提到了用 “列表推导式” 获得列表,实际上我们还可以用同样的办法获得元组。如:

tuple((i for i in range(5)))

这样我们就获取了一个元组(0, 1, 2, 3, 4)

3.2 不要与生成器(Genarator)混淆

可能你已经注意到了,我们写列表生成式的时候写的是:

[i for i in range(5)]

而不会多此一举地写成:

list([i for i in range(5)])

即可以得到列表[0,1,2,3,4]

那么为什么到了元组这而,我们不直接写成:

(i for i in range(5))

的形式呢?其实,如果不使用tuple()语句,在元组中直接使用这种写法根本不会得到元组,而是得到一个生成器对象,如图所示:

生成器(Genarator)提供了一种一不安循环一边计算的机制,可以边推导边把推到的值传递出去,而不需要等到所有值计算完成。

目录
相关文章
|
2月前
|
存储 索引 Python
python中的数据容器
python中的数据容器
|
2月前
|
Python
Python中的tuple:探索其强大功能与实用技巧
Python中的tuple:探索其强大功能与实用技巧
28 1
|
3月前
|
存储 Kubernetes Cloud Native
探索Python编程的奥秘云原生时代的容器编排:Kubernetes入门与实践
【8月更文挑战第30天】本文以浅显易懂的方式,探讨了Python编程的核心概念和技巧。从基础语法到高级特性,再到实际应用案例,逐步引导读者深入理解Python编程的精髓。通过本文的学习,读者将能够掌握Python编程的基本技能,并激发进一步探索的兴趣。
40 13
|
3月前
|
运维 数据安全/隐私保护 Docker
深入浅出Python装饰器《Docker容器化技术在运维中的应用与实践》
【8月更文挑战第29天】装饰器在Python中是一个强大而神秘的存在,它能够轻松地改变一个函数的行为而不修改其源代码。本文将通过浅显易懂的语言和生动的比喻,带你一步步揭开装饰器的神秘面纱,从基本概念到实际应用,让你轻松掌握这一魔法般的工具。
|
3月前
|
存储 缓存 索引
python 的 tuple(元组) 是不是冗余设计?
python 的 tuple(元组) 是不是冗余设计?
|
3月前
|
Kubernetes 持续交付 Docker
Python进行容器化应用开发
【8月更文挑战第13天】随着云计算和微服务架构的发展,容器化已成为现代应用开发的关键部分。Docker和Kubernetes是最流行的容器化工具。本文通过Python示例展示如何构建、运行容器化应用,并使用Kubernetes进行部署。首先介绍如何用Docker容器化一个简单的Flask应用,接着演示如何通过Kubernetes YAML文件定义和管理应用部署和服务。最后,探讨了使用Python与Docker及Kubernetes集成的最佳实践,包括自动化测试、持续集成、微服务架构和容器编排。
27 1
|
3月前
|
存储 数据库 C++
"深入剖析Python元组(tuple):与列表的对比、特性解析及高效应用场景展示"
【8月更文挑战第9天】Python元组与列表虽均用于存储元素集合,但有本质差异。元组不可变,创建后无法修改,适合保护数据不被意外更改的场景,如作字典键或传递固定值。列表则可变,支持动态增删改,适用于需频繁调整的数据集。元组因不可变性而在性能上有优势,可用于快速查找。两者各有千秋,根据具体需求选择使用。例如,元组可用于表示坐标点或日期,而列表更适合管理用户列表或库存。
106 1
|
3月前
|
Python 容器
【Leetcode刷题Python】11. 盛最多水的容器
解决LeetCode "盛最多水的容器" 问题的Python实现代码,使用了双指针的方法来找出能够容纳最多水的两条线。代码中定义了两个指针i和j,分别从数组的两端向中间遍历,通过计算两个指针所指高度的较小值与它们之间的距离的乘积来更新最大面积res。
30 0
|
3月前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型tuple
Python中tuple(元组)的数据结构,包括元组的创建、访问、修改,以及元组支持的运算符和内置函数,还探讨了元组的特性如不可变性和特殊用法,最后扩展介绍了命名元组的概念和使用。
19 0
|
3月前
|
SQL 机器学习/深度学习 算法
【python】python指南(七):静态类型注解之Tuple
【python】python指南(七):静态类型注解之Tuple
36 0