相关代码如下所示:
- >>> t3 = 1.1, 2, True, "hello"
-
- >>> print(t3)
-
- (1.1, 2, True, 'hello')
其中,元组t3中包含了浮点类型、整数、布尔类型和字符串类型的元素。
相关代码如下所示:
- >>> 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中包含了一个列表,可以通过索引改变列表中元素的值。
当元组中只有一个元素时,需要在该元素后面加一个逗号,相关代码如下所示:
- >>> t6 = (1)
-
- >>> type(t6)
-
- <class 'int'>
-
- >>> t6 = 1,
-
- >>> type(t6)
-
- <class 'tuple'>
从以上代码中可以看出,当元组中只有一个元素时,如果不加逗号,则此时定义的变量类型是int而不是tuple。只有在元组后面加逗号后,定义的变量类型才是tuple。
在“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 "
" , line 1, in -
- x,y = t1
-
- ValueError: too many values to unpack (expected 2)
-
- >>> x,y,z,a = t1
-
- Traceback (most recent call last):
-
- File "
" , line 1, in -
- x,y,z,a = t1
-
- ValueError: not enough values to unpack (expected 4, got 3)
从以上代码中可以看到,于保存元组元素的变量个数不能少于元组元素个数,也不能多于元组元素的个数。