Python列表切片作为浅拷贝

时间:2015-12-11 19:59:01

标签: python 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] / {{1}相同的对象}?

1 个答案:

答案 0 :(得分:3)

boo[0]确实指向与foo[0]相同的对象。但是boo[0] = 5执行操作不会修改boo[0]引用的对象;它修改了boo引用的对象。

通过更改该元素"指向"的内容,分配到列表元素会修改列表。它对指向的对象没有影响。