首頁  >  文章  >  後端開發  >  為什麼更新 Python 字典的淺表副本不會改變原始字典?

為什麼更新 Python 字典的淺表副本不會改變原始字典?

Linda Hamilton
Linda Hamilton原創
2024-11-24 06:37:10633瀏覽

Why Doesn't Updating a Shallow Copy of a Python Dictionary Change the Original?

為什麼淺複製字典不更新原始

在處理資料結構時,理解複製的細微差別至關重要。 Python 提供兩種主要的複製方法:淺複製和深複製。本文深入探討了這些技術的差異,特別研究了為什麼更新淺拷貝不會影響原始字典。

Python 的淺拷貝

dict.copy()執行字典的淺表複製,這意味著它創建對相同內容的新引用。內容不會按值重複,而是共享相同的記憶體引用。

考慮以下範例:

original = dict(a=1, b=2)
new = original.copy()
new.update({'c': 3})

淺複製之後,對新引用(新)所做的任何更改都會更改原始字典(原始),因為它們指向相同的基礎資料。在範例中,將 'c': 3 加到淺複製也會更新原始字典。

了解深複製與淺複製

淺複製僅建立對現有資料的新引用,深度複製建立全新的物件。內容被遞歸複製。這可以確保對新引用所做的任何修改都不會影響原始引用。

使用 copy.deepcopy() 執行深層複製。在這種情況下,對新引用 (c) 所做的任何更改都不會影響原始字典 (a)。

結論

Python 中的淺複製涉及創建新的引用現有數據,而深度複製則創建具有重複內容的全新物件。在處理複雜的資料結構時,理解這一區別至關重要,因為它決定了對一個物件的修改如何影響其他物件。

以上是為什麼更新 Python 字典的淺表副本不會改變原始字典?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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