Python3:保留修改列表中的更改元素
问题描述:
我正在生成数字的三元组并尝试将它们放入列表中,我将稍后处理它。在下面的代码中,我将一个三重Elt添加到列表L中。我如何保留未来修改Elt以修改L?应该超级容易,但是如何?Python3:保留修改列表中的更改元素
L = [[2, 3, 4]]
Elt = [5, 6, 7]
def proc1(BigList, NewElt):
BigList = BigList + [NewElt.copy()]
return(BigList)
print(L)
L = proc1(L, Elt)
print(L)
Elt[1] = 70 # now L[1] is different from Elt
print(L)
print(Elt)
Output:
[[2, 3, 4]]
[[2, 3, 4], [5, 6, 7]]
[[2, 3, 4], [5, 6, 7]]
[5, 70, 7]
编辑:其实,我一直在寻找价值。现在我明白了。谢谢!
答
您可以创建列表副本并使用它。有两种方法如何在Python复制列表,see here.
例如:
def proc1(BigList, NewElt):
BigList = BigList + [NewElt[:]]
return(BigList)
在'Elt'列表实际上应该是不modifyable,'元组(NewElt)'可能是更好的方法。 –
这是真的,但它真的取决于作者。对我来说,这个问题的问题似乎是由于通过了列表的引用而引起的。但是如果你真的想要一个列表数据结构,哪些项目不能被修改,那么元组就是要走的路。 – ThePavolC