Python列表切片作为浅拷贝

Python列表切片作为浅拷贝,python,shallow-copy,Python,Shallow Copy,foo不会改变,而且: foo = [1, 2, 3] foo[:][0] = 5 同样,foo[0]保持不变 为什么??浅层副本创建新列表,但不应boo[0]/boo[1]/boo[2]指向与foo[0]/foo[1]/foo[2]相同的对象。但是执行boo[0]=5不会修改boo[0]引用的对象;它修改boo引用的对象 分配给列表的某个元素会通过更改该元素“指向”的内容来修改列表。它对指向的对象没有影响。您只是重新分配副本中存储在位置0的内容,为什么会更改原始内容?我不认为标记为重复的

foo
不会改变,而且:

foo = [1, 2, 3]  
foo[:][0] = 5
同样,
foo[0]
保持不变


为什么??浅层副本创建新列表,但不应
boo[0]
/
boo[1]
/
boo[2]
指向与
foo[0]
/
foo[1]
/
foo[2]
相同的对象。但是执行
boo[0]=5
不会修改
boo[0]
引用的对象;它修改
boo
引用的对象


分配给列表的某个元素会通过更改该元素“指向”的内容来修改列表。它对指向的对象没有影响。

您只是重新分配副本中存储在位置0的内容,为什么会更改原始内容?我不认为标记为重复的问题实际上是重复的。这个问题不是问如何制作列表的副本,而是问为什么列表的副本不能按发问者期望的方式工作。related@BrenBarn Sure。我觉得老年退休金计划的问题已经得到了回答,所以我就用锤子。我为此道歉。尊敬的。为什么您希望foo在复制它时发生更改?
import copy  
foo = [1, 2, 3]   
boo = copy.copy(foo)  
boo[0] = 5