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