在 python 中保持对象静态



我确定这是一个基本问题,并且在帮助文件中的某个地方,问题是我不是程序员,不确定用于搜索它的正确术语。无论如何,我在动态更新一个对象而不是导入静态值时遇到了问题(再次,可能是错误的技术术语,但我能得到的最接近)。例如:

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[:])

最新更新