如果我在元组中有一个列表,然后尝试将该列表与另一个列表连接起来,我会得到一个例外:
>>> a = ([1], [2])
>>> a[1] += [3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
这是预期的:连接正在创建一个新列表,而元组是不可变的。但是,尽管有例外,元组已更新:
>>> print(a)
([1], [2, 3])
为什么会这样?
答案 0 :(得分:5)
那是因为连接(+
)首先发生,然后是分配。
由于这里元组的元素是list
,它们是 mutable ,a[1] + [3]
会成功,但由于元组本身是不可变的,将连接的输出分配给a[1]
将失败(预期)。