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]
?
答案 0 :(得分:8)
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