Python元组是不可变的

示例

Python中lists和tuples之间的主要区别之一是元组是不可变的,也就是说,一旦元组初始化,就不能添加或修改项目。例如:

>>> t = (1, 4, 9)
>>> t[0] = 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

同样,元组也没有.append和.extend方法list。可以使用+=,但是它会更改变量的绑定,而不是元组本身:

>>> t = (1, 2)
>>> q = t
>>> t += (3, 4)
>>> t
(1, 2, 3, 4)
>>> q
(1, 2)

lists在元组中放置易变对象(例如)时要小心。更改结果时,这可能导致非常混乱的结果。例如:

>>> t = (1, 2, 3, [1, 2, 3])
(1, 2, 3, [1, 2, 3])
>>> t[3] += [4, 5]

两者引发错误,改变元组中的列表中的内容:

TypeError: 'tuple' object does not support item assignment
>>> t
(1, 2, 3, [1, 2, 3, 4, 5])

您可以使用+=运算符将其“附加”到一个元组-这是通过使用您“附加”的新元素创建一个新的元组并将其分配给其当前变量来实现的;旧的元组没有改变,而是被替换了!

这样可以避免在列表之间来回转换,但这很慢并且是一种不好的做法,尤其是在要多次追加的情况下。