元组和列表是非常相似的,有一种类似近亲的关系,也就是说列表中很多操作同样适用于元组,比如索引、切片等等,但也有一部分不同,这里主要来说一下元组的特别之处。
首先元组又被称作带锁的列表,就是元组内的元素是不能随意更改的,比如不能给元组中的一个元素随意赋值。
In [2]: tuple1 = (1,2,3)
In [3]: tuple1[2] = 4
#会发生报错,不支持这样的操作
TypeError: 'tuple' object does not support item assignment
元组的标志并不是单纯的小括号,而是逗号,或者小括号与逗号的结合,看下面这个例子。
In [31]: tuple2 = (1)
In [32]: type(tuple2)
Out[32]: int
In [33]: tuple3 = (1,)
In [34]: type(tuple3)
Out[34]: tuple
In [35]: tuple4 = 1,2,
In [36]: type(tuple4)
Out[36]: tuple
那如何初始化一个空元组呢?
In [39]: tuple5 = ()
In [40]: type(tuple5)
Out[40]: tuple
上面刚刚说过元组是不可变对象,自然也不会有append、insert、pop这类的操作。元组中增添可以利用”+”实现,删除则可以利用del,因为这是python自带的回收机制。
In [42]: tuple5 = tuple5[:] + (1,2,3,4,)
In [43]: tuple5
Out[47]: (1, 2, 3, 4)
In [50]: del tuple5 #不支持切片
In [51]: tuple5
NameError: name 'tuple5' is not defined
“*
“在数值型之间为乘积运算符,而在列表和元组之间可以表示为重复运算符。
In [53]: tuple5 = (1,2)
In [54]: tuple5 * 3
Out[54]: (1, 2, 1, 2, 1, 2)