2011-05-29 47 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

相關問題