更新元组内的列表

lum*_*ota 3 python list python-3.x

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

>>> 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
Run Code Online (Sandbox Code Playgroud)

这是预期的:连接是创建一个新列表,元组是不可变的.但是,尽管有例外,元组已更新:

>>> print(a)
([1], [2, 3])
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

hee*_*ayl 5

那是因为串联(+)首先发生,然后是赋值.

由于这里元组的元素list可变的 s ,所以a[1] + [3]会成功,但由于元组本身是不可变的,所以串联输出的分配a[1]将失败(预期).