除了两个方面,“元组”数据类型几乎与列表数据类型一样。首先,元组输入
时用圆括号(),而不是用方括号[]。例如,在交互式环境中输入以下代码: >>> ?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? 可以实现一些优化,让使用元组的代码比使用列表的代码更快。 ?
|