2017-02-17 54 views
0

我與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代碼,我越來越糊塗......

提前感謝!

+0

'left'和'right'不是副本.. –

+0

'left = vector1'之後,你有兩個變量引用同一個列表。如果你想要兩個列表,你需要複製列表。例如。 'left = list(vector1)','right = list(vector1)'。 – khelwood

+0

檢查你的代碼在這[鏈接]執行(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

回答

1

當你說

left = vector1 

Python不復制列表中的內容,但現在新的列表左指向量1

所以,當你改變新的列表,舊列表也發生了變化。

+0

如何將列表中的內容複製到新變量中? –

+0

'left = vector1 [:]'會做 –

+0

@VíctorMartínez:看到重複。 –

相關問題