在 Python 中使用清單時,可能會出現意外行為。讓我們了解為什麼更改一個清單會意外影響另一個清單。
問題:
考慮以下Python 程式碼:
<code class="python">v = [0, 0, 0, 0, 0, 0, 0, 0, 0] vec = v # Assignment by reference vec[5] = 5</code>
此程式碼執行後, v 和vec 都在索引5 處顯示修改後的值:
>>> print(vec) [0, 0, 0, 0, 0, 5, 0, 0, 0] >>> print(v) [0, 0, 0, 0, 0, 5, 0, 0, 0]
即使v 沒有明確修改,為什麼它也會改變?
理解問題:
在Python中,當你將一個清單分配給一個新變數時,你並不是在創建一個副本;而是在創建一個副本。相反,您正在創建一個參考。這意味著 v 和 vec 都指向記憶體中相同的底層列表物件。
解決方案:
要擁有兩個具有相同值的單獨列表,您需要建立使用list() 建構子的副本:
<code class="python">vec = list(v) # Creates a copy</code>
現在,當您對vec 進行更改時,v 將不受影響。
以上是為什麼在 Python 中修改一個清單會影響另一個清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!