3 元组中的元素
3.1 元组中的元素可以是不同类型
相关代码如下所示:
>>> t3 = 1.1, 2, True, "hello"
>>> print(t3)
(1.1, 2, True, 'hello')
其中,元组t3中包含了浮点类型、整数、布尔类型和字符串类型的元素。
3.2 元组中的元素可以是元组、列表、集合和字典
相关代码如下所示:
>>> t4 = 1,2,(3,4,5)
>>> print(t4)
(1, 2, (3, 4, 5))
其中,元组t4中嵌套了一个元组,即将元组作为其元素。
需要注意是的是,当列表等可变类型作为元组的元素时,虽然不能改变直接元组的元素,但是可以改变元组中列表的元素。相关代码如下所示。
>>> t5 = 1,2,[3,4,5]
>>> t5[2][0] = 10
>>> print(t5)
(1, 2, [10, 4, 5])
其中,t5中包含了一个列表,可以通过索引改变列表中元素的值。
3.3 当元组中只有一个元素时
当元组中只有一个元素时,需要在该元素后面加一个逗号,相关代码如下所示:
>>> t6 = (1)
>>> type(t6)
<class 'int'>
>>> t6 = 1,
>>> type(t6)
<class 'tuple'>
从以上代码中可以看出,当元组中只有一个元素时,如果不加逗号,则此时定义的变量类型是int而不是tuple。只有在元组后面加逗号后,定义的变量类型才是tuple。
4 元组的打包与解包
在“1 元组的定义”中提到定义元组时,可以不用圆括号,实际上这就是元组打包的过程,将每个元素打包成元组。打包的逆过程是解包,即把元组中的元素分解为变量,相关代码如下所示。
>>> t1 = 1,2,3
>>> type(t1)
<class 'tuple'>
>>> x,y,z = t1
>>> print(x, y, z)
1 2 3
>>> type(x)
<class 'int'>
其中,元组t1将1,2,3这三个数字打包;之后再将t1进行解包,元素值分别保存到变量x、y和z中。
需要注意的是,元组解包时,用于保存元组元素的变量个数必须与元组元素个数相同,否则代码会报错。
>>> x,y = t1
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
x,y = t1
ValueError: too many values to unpack (expected 2)
>>> x,y,z,a = t1
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
x,y,z,a = t1
ValueError: not enough values to unpack (expected 4, got 3)
从以上代码中可以看到,于保存元组元素的变量个数不能少于元组元素个数,也不能多于元组元素的个数。