2017-03-24 40 views
0

我想:如何在python中複製列表而不保持鏈接?

A = [1,2,3] 
B = A 
B[0] = A[0]*3 

應該給:

B == [3,2,3] 
True 
A == [1,2,3] 
True 

,但它確實:

B == [3,2,3] 
A == [3,2,3] 

我怎麼B中複製一個比沒有保持連接到b? 感謝您的幫助。

+0

'[:]的''而不是乙= A'?這使得一個淺拷貝。 –

+0

你可以做B = A.copy()返回一個淺拷貝 – bvmcode

+0

你也可以使用這個B = [x for x in A] – Ashish

回答

2

這是因爲你只是指向B的引用,根本不做任何複製。相反,請執行以下操作以實際創建副本。

A = [1,2,3] 
B = A[:] 

這將工作,如果沒有引用變量。如果你不希望這樣的行爲,然後使用DEEP_COPY方法如下

B = copy.deepcopy(A) 

然後如果更改,也不會改變B B = A

+0

不,OP根本沒有複製:'B'和'A'指的是** ** **列表。人們可以通過製作淺拷貝來解決這個問題。 –

+0

謝謝 - 我修改了它。對原始錯誤抱歉 –