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"的内容来修改列表。它对指向的对象没有影响。