首頁  >  文章  >  後端開發  >  為什麼在 Python 中將清單指派給新變數不會建立單獨的副本?

為什麼在 Python 中將清單指派給新變數不會建立單獨的副本?

Linda Hamilton
Linda Hamilton原創
2024-11-03 07:43:30531瀏覽

Why does assigning a list to a new variable in Python not create a separate copy?

意外的列表突變

建立類似v = [0,0,0,0,0,0,0,0 的列表時,0],您可能會假設將新清單指派給變數會建立一個單獨的參考。但是,以下程式碼可能會出現意外行為:

<code class="python">vec = v
vec[5] = 5</code>

vec 和 v 現在都在索引 5 處包含值 5。為什麼會發生這種情況?

引用賦值

在 Python 中,列表是可變物件。分配 vec = v 不會建立清單的新副本。相反,它分配對 v 的引用。 vec 和 v 都指向記憶體中相同的基礎列表物件。

對 vec 或 v 進行的任何修改都會影響原始列表,因為它們是相同的列表。這就是為什麼當 vec[5] 改變時,v 也會改變。

解決方案

要建立清單的單獨副本,請使用list() 函數:

<code class="python">vec = list(v)</code>

這將建立一個新的列表對象,其中包含v 中元素的副本。對 vec 所做的任何更改都不會影響 v,反之亦然。

以上是為什麼在 Python 中將清單指派給新變數不會建立單獨的副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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