首頁 >後端開發 >Python教學 >Python 中的淺拷貝與深拷貝:何時使用哪一個?

Python 中的淺拷貝與深拷貝:何時使用哪一個?

Susan Sarandon
Susan Sarandon原創
2024-12-21 10:09:10212瀏覽

Shallow vs. Deep Copy in Python: When to Use Which?

了解淺複製、深複製和賦值操作

普通賦值的低效率

正常的賦值操作只是建立對現有物件的引用,而不是建立新物件。這可能會導致不可預見的修改,因為對原始物件的變更也會反映在複製的物件中。

淺複製:表面級複製

淺複製copy 方法建構一個新物件並插入對原始物件中包含的現有物件的引用。這意味著對原始物件的子物件的變更也會反映在淺複製中。

深複製:完全複製

深複製方法建立新物件並遞歸插入在原始物件中找到的物件的副本。這可以確保對原始物件的子物件所做的任何更改都不會影響深層複製。

對可變和不可變對象的影響

    這些複製操作對可變和不可變對象:
  • 不可變物件(例如字串、元組):
  • 淺拷貝和深拷貝沒有區別,因為不可變物件無法修改。
  • 可變物件(例如列表、字典):
淺拷貝保留對原始物件的子物件的引用,而深拷貝則建立這些子物件的新實例

範例

import copy

a = "deepak"
b = (1, 2, 3, 4)
c = [1, 2, 3, 4]
d = {1: 10, 2: 20, 3: 30}

a1 = copy.copy(a)
b1 = copy.copy(b)
c1 = copy.copy(c)
d1 = copy.copy(d)
考慮以下程式碼:

對於字串和元組等不可變物件(a和 b 中的這種情況),淺拷貝和深拷貝都會建立具有不同記憶體位址的新物件。但是,對於列表和字典(c 和 d)等可變對象,淺拷貝將建立對原始對象的新引用,而深拷貝將建立這些對象的新實例。

以上是Python 中的淺拷貝與深拷貝:何時使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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