Python:带有可变项的元组

时间:2015-10-14 10:54:31

标签: python tuples immutability mutable

我们知道tuple是不可变的。但与此同时,它可以包含可变实体。

假设我们有下一个tuple

x = (1, [1, 2])

让我们尝试改变第一个元素:

x[0] = 10
----> 1 x[0] = 10
TypeError: 'tuple' object does not support item assignment

是的。这也就不足为奇了。绝对预期的行为。

让我们尝试在我们的tuple

中追加要列出的元素
>>> x[1].append(3)    
(1, [1, 2, 3])

因为我们将可变实体变为列表,所以没有任何错误。列表也有相同的参考。

现在让我们尝试通过+=附加:

 x[1] += [4]
----> 1 x[1] += [4]
TypeError: 'tuple' object does not support item assignment

>>> x
>>> Out[49]: (1, [1, 2, 3, 4])

虽然列表的TypeError值已更改。我有点困惑。

这种二元行为的原因是什么?

0 个答案:

没有答案