2015-06-20 112 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