我确定这是一个基本问题,并且在帮助文件中的某个地方,问题是我不是程序员,不确定用于搜索它的正确术语。无论如何,我在动态更新一个对象而不是导入静态值时遇到了问题(再次,可能是错误的技术术语,但我能得到的最接近)。例如:
L=[]
O=[]
i=0
while i<3:
O.append(i)
L.append(O)
i+=1
print(L)
我希望它返回 [[0],[0,1],[0,1,2]],但我得到 [[0,1,2],[0,1,2],[0,1,2]]。基本上,列表 L 似乎将 O 视为一个变量,并简单地返回结束值 [0,1,2] 三次,而不是在我将它们附加到 L 时列出 O 的三个不同值。我如何说服它做后者?
您看到的原因是,您每次附加到L
上的是对您在程序第二行中创建并分配给O
的同一列表的引用。L.append(O)
不会复制O
中的内容。 它只是在列表中引用它L
.
如果在将O
附加到L
时将其复制,您将获得预期的结果:
L.append(O[:])