更新元组内的列表

时间:2018-02-12 12:28:35

标签: python python-3.x list

如果我在元组中有一个列表,然后尝试将该列表与另一个列表连接起来,我会得到一个例外:

>>> 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])

为什么会这样?

1 个答案:

答案 0 :(得分:5)

那是因为连接(+)首先发生,然后是分配。

由于这里元组的元素是list,它们是 mutable a[1] + [3]会成功,但由于元组本身是不可变的,将连接的输出分配给a[1]将失败(预期)。