注意喽!
元组也是一组有序数据的组合,和列表不同是,元组只允许访问, 无法修改, 删除 及 添加.
01
元组基本操作
1. 创建空元组
变量 = ()
变量 = tuple()
代码语言:javascript复制In [1]: t1 = ()
In [2]: t1
Out[2]: ()
In [3]: t2 = tuple()
In [4]: t2
Out[4]: ()
2. 有数据(元素)的元组
单个元素的元素
变量 = (值, )
变量 = 值,
代码语言:javascript复制In [7]: t4 = (1,)
In [8]: t4
Out[8]: (1,)
In [9]: t5 = 1,
In [10]: t5
Out[10]: (1,)
3. 具有多个数据的元组
变量 = (值,值,值....)
变量 = 值,值,值....
代码语言:javascript复制In [11]: t6 = (1,2)
In [12]: t6
Out[12]: (1, 2)
In [13]: t7 = 1,2
In [14]: t7
Out[14]: (1, 2)
4. 访问元组中的元素
变量[索引]
代码语言:javascript复制In [15]: t8 = (1,2)
In [16]: t8[0]
Out[16]: 1
5. 删除整个元组
del 元组变量
代码语言:javascript复制In [17]: del t8
In [18]: t8
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-18-44b56b502ba8> in <module>
----> 1 t8
NameError: name 't8' is not defined
6. 元组相加操作
变量 = 元组1 元组2
代码语言:javascript复制In [19]: t1 = (1, 2)
In [20]: t2 = (3, 4)
In [21]: t3 = t1 t2
In [22]: t3
Out[22]: (1, 2, 3, 4)
7. 元组相乘操作
变量 = 元组 * 整数
代码语言:javascript复制In [23]: t1 = (1, 2)
In [24]: t2 = t1 * 2
In [25]: t2
Out[25]: (1, 2, 1, 2)
8. 索引操作
8.1 获取整个元组
变量 = 元组[:]
代码语言:javascript复制In [26]: t5 = (1,2,3,4,5,6)
In [27]: t5[:]
Out[27]: (1, 2, 3, 4, 5, 6)
8.2 获取元组开头到结束索引之前的数据组成的元组
变量 = 元组[:结束索引]
代码语言:javascript复制In [28]: t5[:2]
Out[28]: (1, 2)
In [29]: t5[:-2]
Out[29]: (1, 2, 3, 4)
8.3 获取元组开始索引到元组末尾的数据组成的元组
变量 = 元组[开始索引:]
代码语言:javascript复制In [30]: t5[2:]
Out[30]: (3, 4, 5, 6)
In [31]: t5[-2:]
Out[31]: (5, 6)
8.4 获取开始索引和结束索引之间的数据组成的元组(包含开始索引,不包含结束索引)
变量 = 元组[开始索引:结束索引]
代码语言:javascript复制In [32]: t5[2:4]
Out[32]: (3, 4)
8.5 获取开始索引和结束索引之间的数据(按照间隔值来获取)组成的元组(包含开始索引,不包含结束索引)
变量 = 元组[开始索引:结束索引:间隔值]
代码语言:javascript复制In [33]: t5[1:4:2]
Out[33]: (2, 4)
9. 成员检测
9.1 检测一个数据是否在元组中
值 in 元组
代码语言:javascript复制In [34]: 1 in t5
Out[34]: True
In [35]: 11 in t5
Out[35]: False
9.2 检测一个数据是否不在元组中
值 not in 元组
代码语言:javascript复制In [36]: 2 not in t5
Out[36]: False
In [37]: 22 not in t5
Out[37]: True
02
元组常用函数操作
1. index(索引): 查看值在元组中的索引
代码语言:javascript复制In [38]: t5 = (1,2,3,4,5,6)
In [39]: t5.index(5)
Out[39]: 4
2. count(值): 查看值在元组中的数量
代码语言:javascript复制In [40]: t5.count(6)
Out[40]: 1
3. len(元组): 元组长度
代码语言:javascript复制In [41]: len(t5)
Out[41]: 6
4. max(元组): 元组中的最大值
代码语言:javascript复制In [42]: max(t5)
Out[42]: 6
5. min(元组): 元组中的最小值
代码语言:javascript复制In [43]: min(t5)
Out[43]: 1
6. sum(元组): 计算元组中所有元素的和
代码语言:javascript复制In [44]: sum(t5)
Out[44]: 21
03
元组推导式
注意: 结果是一个生成器, 需要使用tuple()转为元组
1. 简单的元组推导式
格式:(变量可以操作 for 变量 in 元组)
结果:遍历元组中的每个值,将每个值获取之后组成新的元组, 可以对获取的值进行修改
代码语言:javascript复制In [45]: t1 = (1,2,3,4,5)
In [46]: t2 = (i for i in t1)
In [47]: t2
# 结果为生成器
Out[47]: <generator object <genexpr> at 0x10ddce480>
In [48]: tuple(t2)
Out[48]: (1, 2, 3, 4, 5)
2. 带有判断条件的元组推导式
格式:(变量 for 变量 in 元组 if 条件表达式)
结果:遍历元组中的每个值,根据判断条件决定是否取出指定的值组成新的元组,可以对获取的值进行修改
代码语言:javascript复制In [49]: t3 = (i for i in t1 if i > 2)
In [50]: tuple(t3)
Out[50]: (3, 4, 5)
3. 多个元组的同时循环的元组推导式
变量1和变量2可以进行其它计算或操作 新的元组中元素个数=元组1中元素个数 * 元组2中的元素个数
格式:(变量1 变量2 for 变量1 in 元组1 for 变量2 in 元组2)
结果:同时遍历元组1和元组2中的每个值,将元组1中的每个值和元组2中的每个值进行运算得到新的元组
代码语言:javascript复制In [55]: t1 = (1,2,3,4,5)
In [56]: t2 = (1,2,3,4,5)
In [57]: t4 = (i ii for i in t1 for ii in t2)
In [58]: tuple(t4)
Out[58]: (2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8, 5, 6, 7, 8, 9, 6, 7, 8, 9, 10)
4. 带有判断条件的多个元组的同时循环元组推导式
新的元组数量由判断条件决定 = 符合条件的剩余的元组1个数 * 符合条件的剩余的元组2个数
格式:(变量1 变量2 for 变量1 in 元组1 for 变量2 in 元组2 if 条件表达式)
结果:同时遍历元组1和元组2中的每个值,根据判断条件将元组1中的值和元组2中的值进行运算,得到新的元组
代码语言:javascript复制In [59]: t5 = (i ii for i in t1 for ii in t2 if i > 2 and ii > 2)
In [60]: tuple(t5)
Out[60]: (6, 7, 8, 7, 8, 9, 8, 9, 10)
In [61]: t5 = (i ii for i in t1 for ii in t2 if i > 2 and ii > 3)
In [62]: tuple(t5)
Out[62]: (7, 8, 8, 9, 9, 10)