Python 将切片列为浅拷贝
Python list slice as shallow copy
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]
/[=20= 相同的对象]?
boo[0]
确实指向与 foo[0]
相同的对象。但是做 boo[0] = 5
不会修改 boo[0]
引用的对象;它修改了 boo
.
引用的对象
分配给列表的元素会通过更改该元素"points to"的内容来修改列表。它对指向的对象没有影响。
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]
/[=20= 相同的对象]?
boo[0]
确实指向与 foo[0]
相同的对象。但是做 boo[0] = 5
不会修改 boo[0]
引用的对象;它修改了 boo
.
分配给列表的元素会通过更改该元素"points to"的内容来修改列表。它对指向的对象没有影响。