2015-06-20 111 views
0

我正在生成数字的三元组并尝试将它们放入列表中,我将稍后处理它。在下面的代码中,我将一个三重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] 

编辑:其实,我一直在寻找价值。现在我明白了。谢谢!

回答

1

您可以创建列表副本并使用它。有两种方法如何在Python复制列表,see here.

例如:

def proc1(BigList, NewElt): 
    BigList = BigList + [NewElt[:]] 
    return(BigList) 
+0

在'Elt'列表实际上应该是不modifyable,'元组(NewElt)'可能是更好的方法。 –

+0

这是真的,但它真的取决于作者。对我来说,这个问题的问题似乎是由于通过了列表的引用而引起的。但是如果你真的想要一个列表数据结构,哪些项目不能被修改,那么元组就是要走的路。 – ThePavolC