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