首页 > 解决方案 > 变量引用和可变性

问题描述

我发现许多文章提供了如下示例:

listA = [0]
listB = listA
listB.append(1)
print listA
print listB

监狱是要显示两个列表都指向同一个对象,然后如果该对象发生更改,则两个列表都会显示该更改。实际上:

print listA is listB

显示 True...到目前为止一切顺利。

但是,我无法弄清楚为什么以下示例不能像上一个示例那样工作。

listA = [1, 2, 3]
max_val = max(listA)

print max_val is listA[-1]  # True

max_val = 10

print max_val is listA[-1] # False

因此即使 max_val 指向列表的最后一个元素,列表也不会更改。

这是为什么 ?

标签: python-2.7immutabilityobject-referencemutability

解决方案


推荐阅读