为什么我得到[1,2,3],[1,2,3]而不是[1,2,3],[11,2,3]

时间:2011-05-29 07:26:40

标签: python list

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 个答案:

答案 0 :(得分: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