首页 > 解决方案 > 列表插入用最新的插入子列表替换所有子列表

问题描述

 y=[]
 x[0]=1
 x[1]=2
 y.insert(len(y),x)
 x[0]=3
 x[1]=4
 y.insert(len(y),x)
 y
 [[3,4],[3,4]]

上面的代码是在 python shell 解释器上测试的,我的问题,为什么 y.insert(len(y),x) 行用最新的子列表 x 内容替换 y 的所有子列表?这显然不是插入内容变化的子列表的正确方法,那么正确的方法是什么?

标签: python

解决方案


发生这种情况是因为y[0]y[1]指的是相同的元素x。即使您更改了xaftery的第一次插入的内容,它仍然指的是x. 您可以清楚地理解,如果您y在第一次插入之后立即打印值。您还可以打印 的第一个和第二个元素的yid,id 将相同。下面使用:

print(id(y[0]), id(y[1]))

要达到您的要求,您需要插入如下:

y.insert(len(y),list(x))

使用list(x)将创建一个新的和新鲜的数据。


推荐阅读