我與Python是一個新手,我真的不明白爲什麼會發生這樣的:爲什麼我的列表在Python中改變它們的值?
vector1 = [1,0,0,1]
left = vector1
print(str(left))
right = vector1
right[0] = 2
print(str(left))
print(str(right))
輸出是:
[1, 0, 0, 1]
[2, 0, 0, 1]
[2, 0, 0, 1]
我真正想要的是:
[1, 0, 0, 1]
[1, 0, 0, 1]
[2, 0, 0, 1]
爲什麼'左'向量更新,如果我之前用最初的'vector1'值修復它?
我敢肯定,這是一個新手的問題,但我已經習慣了在MATLAB代碼,我越來越糊塗......
提前感謝!
'left'和'right'不是副本.. –
'left = vector1'之後,你有兩個變量引用同一個列表。如果你想要兩個列表,你需要複製列表。例如。 'left = list(vector1)','right = list(vector1)'。 – khelwood
檢查你的代碼在這[鏈接]執行(http://www.pythontutor.com/visualize.html#code=vector1%20%3D%20%5B1,0,0,1%5D%0Aleft% 20%20%3D%20vector1%0Aprint%28str%28left%29%29%0A%0Aright%20%3D%20vector1%5B%3A%5D%0Aright%5B0%5D%20%3D%202%0A%0Aprint% 28str%28left%29%29%0Aprint%28str%28right%29%29&累積=假curInstr = 7&heapPrimitives =假模式=顯示&原點=停用frontend.js&PY = 3&rawInputLstJSON =%5B%5D&textReferences =假)。然後嘗試編輯代碼以檢查更改。 @Darth建議使用'left = vector1 [:]'。 – SSSINISTER