更改 Python 中的列表

Changing lists in Python

#Case 1
myList=[1,2,3,4]
old=myList
myList=[5,6,7,8]
print(old)

#Case 2
myList=[1,2,3,4]
old=myList
myList[0]=10
print(old)

#Case 3
myList=[1,2,3,4]
old=myList.copy()
myList[0]=10
print(old)

[1, 2, 3, 4]
[10, 2, 3, 4]
[1, 2, 3, 4]

对我来说,案例 3 是安全案例,案例 2 是明确的。但是,我无法清楚地理解为什么情况 1 old 没有更改。

在案例 1 中,我们正在为名称 myList 重新分配一个全新的列表。分配给 myList 的原始列表不受此操作的影响; myList 现在只是指向不同的对象

当我们查看对象的 ID 时,这一点变得很清楚:

>>> myList = [1,2,3,4]
>>> print(id(myList))
47168728
>>> old = myList
>>> print(id(old))
47168728
>>> myList = [5,6,7,8]
>>> print(id(myList))
47221816
>>> print(id(old))
47168728

写成old = myList并没有把这两个变量绑定得密不可分;它将 myList 分配给 old 在那个时间点 。之后通过将 myList 重新分配给新列表,您可以使 myListold 指向不同的值。