1. 程式人生 > >python 淺談深複製,淺複製

python 淺談深複製,淺複製

深複製,淺複製解析

深複製,淺複製會出現可變序列型別中出現

淺複製:複製父物件,不會複製物件內部的子物件(引用的物件),

深複製:複製父物件和子物件

深複製需要先匯入copy模組,然後才能使用
import copy
copy.deepcopy(list)
 列表在巢狀一個有名字的列表時,更像是在引用這個物件,例如:
     a = [1,2,3]
     b = [a,4,5,6]
 在b輸出顯示時,系統把會a解析成列表顯示出來:
     print(b)
     >>  [[1,2,3],4,5,6]
 但系統記錄的始終是 b = [a,4
,5,6] ,a只是一個引用的物件。 所以在複製時, a 也是作為一個可引用的物件複製給 b , 可以理解為 a 只是一個快捷方式,再怎麼複製也只是複製一個快捷方式而已, 這就是所為的淺複製。 而深複製呢,就是把 a 的內容 完完全全 複製到一個新的列表裡面, 換成另外一個思路就是: 深複製時,系統把a這個快捷方式所指的檔案,複製給了另外一個物件。 總結: 淺複製:只複製被引用的物件(快捷方式) 深複製:複製被引用物件的內容(檔案)

示例:

import copy
a = [1,2,3,4,['a','b']]     # 賦值操作
b = a                       # 賦值操作
c = a.copy() # 淺複製操作 d = copy.copy(a) # 淺複製操作 e = copy.deepcopy(a) # 深複製操作 a.append(5) a[4].append('c') print(a) [1, 2, 3, 4, ['a', 'b', 'c'], 5] print(b) [1, 2, 3, 4, ['a', 'b', 'c'], 5] print(c) [1, 2, 3, 4, ['a', 'b', 'c']] print(d) [1, 2, 3, 4, ['a', 'b', 'c'
]] print(e) [1, 2, 3, 4, ['a', 'b']]