元組是不可變的
Python 中 list
s 和 tuple
s 之間的主要區別之一是元組是不可變的,也就是說,一旦元組初始化,就無法新增或修改專案。例如:
>>> 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
同樣,元組沒有像 list
那樣的 .append
和 .extend
方法。使用+=
是可能的,但它改變了變數的繫結,而不是元組本身:
>>> 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])
你可以使用+=
運算子追加到元組 - 這可以通過使用你追加的新元素建立一個新元組並將其分配給當前變數來實現; 舊元組沒有改變,但更換了!
這避免了轉換到列表和從列表轉換,但這很慢並且是一種不好的做法,特別是如果你要多次追加。