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