Python中的元组用英文“tuple”表示,是多个值的集合。
1 元组的定义
可以用两种方式定义元组:一种是带圆括号的方式,另一种是不带圆括号的方式。
1.1 带圆括号的方式
使用带圆括号的方式定义元组的代码如下所示:
>>> t1 = (1,2,3)
>>> type(t1)
<class 'tuple'>
从以上代码可以看出,变量t1的类型是tuple,即元组。使用圆括号定义t1时,元组中的元素用逗号分隔。
1.2 不带圆括号的方式
使用不带圆括号的方式定义元组的代码如下所示:
>>> t2 = 1,2,3
>>> type(t2)
<class 'tuple'>
>>> print(t1==t2)
True
从以上代码中可以看出,使用两种方式分别定义的元组t1和t2,是相同的。
2 访问元组中的元素
可以通过索引来访问元组中的元素。代码如下所示
>>> print(t1[0])
1
>>> print(t1[1]==t2[2])
False
需要注意的是,元组属于不可变(immutable)类型,因此不能通过索引来修改元组中的元素,代码如下所示。
>>> t1[0] = 10
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
t1[0] = 10
TypeError: 'tuple' object does not support item assignment
此时的报错信息为“类型错误:元组对象不支持赋值操作”。
相关链接1 不可变类型与可变类型:不可变类型的对象具有固定的值,如果为该对象赋新的值,则需要创建一个新对象。数字、字符串和元组都属于不可变类型。相关代码如下:
>>> str1 = "hello"
>>> id(str1)
2145021337328
>>> str1 = "world"
>>> id(str1)
2144989705648
其中,变量str1的类型是字符串,该变量的初始值是“hello”,其id为2145021337328。当为str1赋新值(“world”)后,该变量的id变为2144989705648。因为字符串是不可变类型,所以为其赋新值后,实际上创建了一个新的对象(id发生变化)来保存这个新值。同理,可变类型的对象不具有固定的值,如果为该对象赋新的值,则不需要创建一个新对象。列表、集合、字典属于可变类型,相关代码如下:
>>> list1 = [1,2,3]
>>> id(list1)
2145021492864
>>> list1[0]=10
>>> id(list1)
2145021492864
从以上代码可以看出,变量list1类型是列表,当其值发生变化时,其id不变,因为列表是可变类型。