Python3:保持更改的元素不会修改列表

时间:2015-06-20 21:31:33

标签: python parameters

我正在生成数字的三元组,并试图将它们放入我将在后面处理的列表中。在下面的代码中,我将三个Elt添加到列表L中,其中包含一个三元组。如何保持Elt未来的修改不会修改L?应该超级简单,但如何?

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 个答案:

答案 0 :(得分:1)

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

例如:

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