意外的列表突變:了解引用的影響
在 Python 中,列表變數表示對儲存在記憶體中的陣列的引用。將一個列表變數指派給另一個列表變數時(例如,vec = v),實際發生的情況是傳遞陣列的位址,而不是複製陣列本身。
這表示對一個清單進行的任何修改都會也會影響指向相同記憶體位址的其他清單。例如,考慮以下程式碼:
<code class="python">v = [0,0,0,0,0,0,0,0,0] vec = v vec[5] = 5</code>
執行上述程式碼後,v 和vec 都會包含以下值:
[0, 0, 0, 0, 0, 5, 0, 0, 0]
發生這種情況是因為vec 和v 都引用記憶體中的同一個數組。當 vec 中索引 5 處的值修改為 5 時,變更不僅會反映在 vec 中,還會反映在 v 中,因為兩個變數都指向同一個底層陣列。
建立清單的真實副本,使用 copy() 方法或以原始列表作為參數的 list() 建構函數,如下所示:
<code class="python">vec = v.copy() vec = list(v)</code>
以上是為什麼在 Python 中修改列表變數也會影響分配給它的另一個變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!