我发现了一些TypeError: 'tuple' object does not support item assignment
关于SO的问题,但我对此仍然感到困惑:
考虑一下代码片段:
>>> a = ([],[])
>>> a[0].append(1) # 1
>>> a
([1], [])
>>> a[0] += [2]
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
a[0] += [2]
TypeError: 'tuple' object does not support item assignment # 2
>>> a
([1, 2], []) # 3
>>>
我的问题是:
1
成功更改了它的值。为什么?(我知道我并不真正了解python的不可变性。)1
被接受,2
加薪的原因是TypeError
什么?3
,a
被修改,那么提高a有TypeError
什么意义呢?谢谢
这是因为元组是不可变的,但它可以包含可变数据类型(在您的情况下为列表)作为元素。
您的元组a = ([], [])
是列表的元组。这就是为什么您能够将数据附加到列表a [0]的原因。
在此:
a[0] += 2
您试图更改引发异常TypeError的元组的值(由于使用了'='赋值运算符)
在三个列表中,由于使用了“ +”运算符,因此将其连接起来。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句