Python 中的淺拷貝與深拷貝:了解對字典的影響
Python 中字典的淺拷貝,使用字典 創建.copy (),可能不會如預期更新原始字典。這種行為源自於淺複製與深複製的概念。
什麼是淺複製?
在淺複製中,引用的是字典的內容,而不是比按值複製。這意味著原始字典和複製的字典都指向相同的底層資料結構。
示範:
>> original = dict(a=1, b=2) >> new = original.copy() >> new.update({'c': 3}) >> original {'a': 1, 'b': 2}
與預期相反,原始字典保持不變淺拷貝更新後。這是因為對資料的引用是共享的,而不是複製的。
清單有何不同:
與字典不同,淺複製清單確實會導致資料的共享引用資料。這是因為列表透過引用包含值。
>> original = [1, 2, 3] >> new = original >> new.append(4) >> new, original ([1, 2, 3, 4], [1, 2, 3, 4])
在這種情況下,原始清單和新清單都引用相同的數據,因此對一個清單所做的變更會影響另一個清單。
使用 copy.deepcopy() 進行深度複製
要創建字典的真正不同的副本,包括其內容,必須使用 copy.deepcopy() 。此函數會按值複製結構和值,確保完全隔離。
import copy >> original = dict(a=1, b=2) >> new = copy.deepcopy(original) >> new.update({'c': 3}) >> original {'a': 1, 'b': 2} >> new {'a': 1, 'c': 3, 'b': 2}
複製操作類型:
以上是Python 字典中的淺複製與深複製:「copy()」何時失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!