foo = [1, 2, 3]
foo[:][0] = 5
foo
也不会改变:
import copy
foo = [1, 2, 3]
boo = copy.copy(foo)
boo[0] = 5
同样,foo[0]
保持不变。
为什么呢?浅层副本会创建新列表,但不应boo[0]
/ boo[1]
/ boo[2]
指向与foo[0]
/ foo[1]
/ {{1}相同的对象}?
答案 0 :(得分:3)
boo[0]
确实指向与foo[0]
相同的对象。但是boo[0] = 5
执行操作不会修改boo[0]
引用的对象;它修改了boo
引用的对象。
通过更改该元素"指向"的内容,分配到列表元素会修改列表。它对指向的对象没有影响。