【发布时间】:2016-02-05 13:23:20
【问题描述】:
在 Python 中:
>>> tup = (1,"a",[1,2,3])
>>> tup
(1, 'a', [1, 2, 3])
>>> tup[2][1] = "a"
>>> tup
(1, 'a', [1, 'a', 3])
从上面我可以修改作为元组一部分的列表内容。由于元组是不可变的,这怎么可能? 我是否以错误的方式理解了不可变部分?
【问题讨论】:
-
因为
list总是可变的。 -
你没有改变元组。第三个元素仍然包含对同一列表的引用。列表已更改,元组在技术上并未更改。
-
比较
[id(x) for x in tup]在修改包含列表之前和之后。
标签: python