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

Python 为什么我得到[1,2,3],[1,2,3]而不是[1,2,3],[11,2,3],python,list,Python,List,为什么我得到的是[1,2,3],[1,2,3]而不是[1,2,3],[11,2,3]?Python不会隐式复制。如果执行nsublista=sublista,nsublista和sublista是同一个列表对象。更改nsublista中的元素会反映在sublista中,因为只有一个列表 lista包含同一个列表两次,所以打印的就是这个列表 sublista = [1, 2, 3] lista = [sublista] nsublista = sublista nsublista[0] = sub

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

Python不会隐式复制。如果执行
nsublista=sublista
nsublista
sublista
是同一个列表对象。更改
nsublista
中的元素会反映在
sublista
中,因为只有一个列表

lista
包含同一个列表两次,所以打印的就是这个列表

sublista = [1, 2, 3]
lista = [sublista]
nsublista = sublista
nsublista[0] = sublista[0]+10
lista.append(nsublista)
print lista

它打印
[[11,2,3],[11,2,3]]
So@seppo-如果您将代码的第三行更改为
nsublista=list(sublista)
,那么您将得到您期望的或使用
nsublista=sublista[:]
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