首页 > 深入Python > 开始了解Python > 元组 101 | << >> | ||||
diveintopython.org Python for experienced programmers |
元组是不可变列表。一旦创建了一个元组就不能以任何方式改变它。
>>> t = ("a", "b", "mpilgrim", "z", "example") >>> t ('a', 'b', 'mpilgrim', 'z', 'example') >>> t[0] 'a' >>> t[-1] 'example' >>> t[1:3] ('b', 'mpilgrim')
元组的定义同列表的定义方式相同,除了整个元素集是用小括号包围的而不是方括号。 | |
元组的元素象列表一样按定义的次序进行排序。序列的索引象列表一样从0开始,所以一个非空元组的第一个元素总是 t[0]。 | |
负数索引象列表一样从元组尾部开始计数。 | |
分片也可以使用,就象列表一样。注意当分割一个列表时,会得到一个新的列表;当分割一个元组时,会得到一个新的元组。 |
>>> t ('a', 'b', 'mpilgrim', 'z', 'example') >>> t.append("new") Traceback (innermost last): File "<interactive input>", line 1, in ? AttributeError: 'tuple' object has no attribute 'append' >>> t.remove("z") Traceback (innermost last): File "<interactive input>", line 1, in ? AttributeError: 'tuple' object has no attribute 'remove' >>> t.index("example") Traceback (innermost last): File "<interactive input>", line 1, in ? AttributeError: 'tuple' object has no attribute 'index' >>> "z" in t 1
你不能向元组增加元素。元组没有 append 或 extend 方法。 | |
你不能从元组中除掉元素。元组没有 remove 或 pop 方法。 | |
你不能在元组中查找元素。元组没有 index 方法。 | |
然而,你可以使用 in 来看一看是否一个元素存在于元组中。 |
那么元组有什么好处呢?
元组可以转化成列表,反之亦然。内置的 tuple 函数接收一个列表,返回一个有着相同元素的元组。而 list 函数接收一个元组,返回一个列表。从效果上看,tuple 冻结一个列表,而 list 解冻一个元组。 |
进一步阅读
脚注
[2] 实际上,事情要比那更复杂。字典关键字必须是不可变的。元组本身是不可改变的,但是如果你有一个列表的元组,那就认为是可变的了,并且在字典中用作关键字是不安全的。只有字符串,数字,或其它字典安全的元组才可以用作字典关键字。
列表 101 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
定义变量 |