首頁 >後端開發 >Python教學 >為什麼在 Python 中修改列表變數也會影響分配給它的另一個變數?

為什麼在 Python 中修改列表變數也會影響分配給它的另一個變數?

Patricia Arquette
Patricia Arquette原創
2024-11-02 18:55:30803瀏覽

Why Does Modifying a List Variable in Python Also Affect Another Variable Assigned to It?

意外的列表突變:了解引用的影響

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn