意外的列表突變
創建類似v = [0,0,0,0,0,0,0,0 的列表時,0],您可能會假設將新清單指派給變數會建立一個單獨的參考。然而,像下面這樣的程式碼可能會表現出意外的行為:
vec = v
vec[5] = 5
vec 和 v 現在都在索引 5 處包含值 5。為什麼會發生這種情況?
引用賦值
在Python中,列表是可變物件。分配 vec = v 不會建立清單的新副本。相反,它分配對 v 的引用。 vec 和 v 都指向記憶體中相同的基礎列表物件。
對 vec 或 v 進行的任何修改都會影響原始列表,因為它們是相同的列表。這就是為什麼當 vec[5] 改變時,v 也會改變。
解決方案
要建立清單的單獨副本,請使用list() 函數:
vec = list(v)
這將建立一個新的清單對象,其中包含v 中元素的副本。對 vec 所做的任何更改都不會影響 v,反之亦然.
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3