2011-05-29 55 views

回答

8

Python不会隐式复制。当你做nsublista = sublista时,nsublistasublista是同一个列表对象。更改nsublista中的元素会反映在sublista中,因为只有一个列表。

lista包含两次相同的列表,所以这是打印。

a = [1, 2, 3]   # a = [1, 2, 3] 
container = [a]   # a = [1, 2, 3]; container = [a] 
b = a     # b = a = [1, 2, 3]; container = [a] 
b[0] = a[0]+10   # b = a = [11, 2, 3]; container = [a] 
container.append(b)  # b = a = [11, 2, 3]; container = [a, a] 
print lista 
+1

所以@seppo - 如果你把你的代码的第三行改为'nsublista = list(sublista)',那么你将得到你期待 – slothrop 2011-05-29 08:22:32

+3

或使用'nsublista = sublista [:]' – slothrop 2011-05-29 08:24:33

相关问题