除了两个方面,“元组”数据类型几乎与列表数据类型一样。首先,元组输入
时用圆括号(),而不是用方括号[]。例如,在交互式环境中输入以下代码:
>>> eggs = ('hello', 42, 0.5)
>>> eggs[0]
'hello'
>>> eggs[1:3]
(42, 0.5)
>>> len(eggs)
3
但元组与列表的主要区别还在于,元组像字符串一样,是不可变的。元组不能让它们的值被修改、添加或删除。在交互式环境中输入以下代码,注意 TypeError出错信息:
>>> eggs = ('hello', 42, 0.5)
>>> eggs[1] = 99
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module> eggs[1] = 99
TypeError: 'tuple' object does not support item assignment
如果元组中只有一个值,你可以在括号内该值的后面跟上一个逗号,表明这种情况。否则,Python 将认为,你只是在一个普通括号内输入了一个值。逗号告诉
Python,这是一个元组(不像其他编程语言,Python 接受列表或元组中最后表项后面跟的逗号)。在交互式环境中,输入以下的 type()函数调用,看看它们的区别:
>>> type(('hello',))
<class 'tuple'>
>>> type(('hello'))
<class 'str'>
你可以用元组告诉所有读代码的人,你不打算改变这个序列的值。如果需要一个永远不会改变的值的序列,就使用元组。使用元组而不是列表的第二个好处在于,因为它们是不可变的,它们的内容不会变化,Python
可以实现一些优化,让使用元组的代码比使用列表的代码更快。