sublista = [1, 2, 3]
lista = [sublista]
nsublista = sublista
nsublista[0] = sublista[0]+10
lista.append(nsublista)
print lista
爲什麼我得到[1, 2, 3],[1, 2, 3]
,而不是[1, 2, 3],[11, 2, 3]
?爲什麼我得到[1,2,3],[1,2,3]而不是[1,2,3],[11,2,3]
sublista = [1, 2, 3]
lista = [sublista]
nsublista = sublista
nsublista[0] = sublista[0]+10
lista.append(nsublista)
print lista
爲什麼我得到[1, 2, 3],[1, 2, 3]
,而不是[1, 2, 3],[11, 2, 3]
?爲什麼我得到[1,2,3],[1,2,3]而不是[1,2,3],[11,2,3]
Python不會隱式複製。當你做nsublista = sublista
時,nsublista
和sublista
是同一個列表對象。更改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
我想這就是蟒蛇? – 2011-05-29 07:28:14
你的問題是什麼? – Norbert 2011-05-29 07:28:32
它打印出[[11,2,3],[11,2,3]]' – 2011-05-29 07:29:42