請看看下面的代碼:如何重新分配(或修改),使用另一個變量定義的Python變量而不修改都
import numpy as np
list1 = [1,2,3]
list2 = list1
list2.append(4)
print list2
print list1
結果是[1,2,3,4]爲兩個打印。我期望list2有[1,2,3,4],list1有[1,2,3],因爲我只給list2加了'4'。它看起來像賦值list2 = list1將list2上的指令傳遞給list1。
首先,我想了解爲什麼是這樣,第二,是否有辦法使變量B與變量A相同,但是B上的任何指令(例如重新賦值),會修改B而不是A?
很顯然,我所能做的
list1 = [1,2,3]
list2 = [1,2,3]
list2.append(4)
,並得到我想要的東西。但是,如果list1是一個(numpy)100x100數組呢?那麼我寧願有辦法將list1複製到另一個變量,而不是手動重寫它。
我不是一個有經驗的程序員,而且對於Python來說還是比較新的。我也試圖儘可能簡單地制定這個問題,並且沒有發現任何直接在本網站上回答它的問題。請將我重定向到我可能錯過的任何事情,並提前接受我的道歉。謝謝!
請注意,您提供普通的Python列表,但談論numpy。不同的野獸:https://stackoverflow.com/questions/3059395/numpy-array-assignment-problem –
你已經回答了你自己的問題。在Python中,賦值*從不復制*。如果你想要一個副本,你需要*明確地創建一個副本*。 'numpy'數組提供了一個你可以使用的'.copy'方法。你應該看看Ned Batchelder的[關於Python名稱和值的事實和神話](https://nedbatchelder.com/text/names.html)。 –
謝謝,非常有用的信息! – orion2112