python元组
本章介绍另一个内置类型:元组,同时说明如何结合使用列表、字典和元组。我还将介绍一个有用的特性,即可变长度参数列表,以及汇集和分散操作符。
说明:“tuple”并没有统一的发音,有些人读成“tuh-ple”,音律类似于“supple”; 而在编程的语境下,大部分读成“too-ple”,音律类似于“quadruple”。
元组是不可变的
元组是一组值的序列。 其中的值可以是任意类型, 使用整数索引, 因此从这点上看,元组与列表非常相似。 二者不同之处在于元组的不可变性。
语法上,元组是用逗号隔开一系列值:
>>> t = 'a', 'b', 'c', 'd', 'e'
虽然并非必须,元组通常用括号括起来:
>>> t = ('a', 'b', 'c', 'd', 'e')
使用单一元素创建元组时,需要在结尾处添加一个逗号:
加逗号和不加逗号的区别
将值放置在括号中并不会创建元组:
>>> t2 = ('a')
>>> type(t2)
<class 'str'>
另一个创建元组的方法是使用内建函数 tuple
。 在没有参数传递时,它会创建一个空元组:
>>> t = tuple()
>>> t
()
如果实参是一个序列(字符串、列表或者元组),结果将是一个包含序列内元素的元组。
>>> t = tuple('lupins')
>>> t
('l', 'u', 'p', 'i', 'n', 's')
因为 tuple
是内建函数名,所以应该避免将它用作变量名。
列表的大多数操作符同样也适用于元组。 方括号运算符将索引一个元素:
>>> t = ('a', 'b', 'c', 'd', 'e')
>>> t[0]
'a'
切片运算符选取一个范围内的元素:
>>> t[1:3]
('b', 'c')
但是,如果你试图元组中的一个元素,会得到错误信息:
>>> t[0] = 'A'
TypeError: object doesn't support item assignment
因为元组是不可变的,你无法改变其中的元素。 但是可以使用其他元组替换现有元组:
>>> t = ('A',) + t[1:]
>>> t
('A', 'b', 'c', 'd', 'e')
这个语句创建了一个新元组,然后让 t
引用该元组。
关系型运算符也适用于元组和其他序列; Python 会首先比较序列中的第一个元素,如果它们相等,就继续比较下一组元素,以此类推,直至比值不同。 其后的元素(即便是差异很大)也不会再参与比较。
>>> (0, 1, 2) < (0, 3, 4)
True
>>> (0, 1, 2000000) < (0, 3, 4)
True