1. 程式人生 > >python學習之深淺拷貝

python學習之深淺拷貝

ron deep 沒有 pen 數據類型 拷貝 內存地址 strong pre

深淺拷貝

淺拷貝:

1、針對的是可變數據類型:list、dict、set ,不可變數據類型int、str、tuple、bool 是沒有拷貝一說的,他們都沒copy() 方法

2、淺拷貝後是在內存地址中分配了一份新的地址,且淺拷貝只拷貝了第一層,第二層不會拷貝,故第二層如果改變,原數據及淺拷貝後的數據也將改變

3、= 賦值不是淺拷貝,[:] 切片是淺拷貝

a = [11,22,[11,22]]

b = a

註:以上稱為賦值,只是將a,b都指向了同一個內存地址

a.append(33)

print(b)

>>> [11,22,[11,22],33] 還是一起改變,b和a都是列表的內存地址的兩個別名

c = a.copy() 用方法copy是淺拷貝,id(a) 與 id(c) 的內存地址是不同的

3、切片是淺拷貝

1 lis = [11,22,[11,22]]
2 qie = lis[:]
3 lis[2].append(33)
4 print(lis,qie) # [11, 22, [11, 22, 33]] [11, 22, [11, 22, 33]]
5 print(id(lis),id(qie))   # 1482689615624 1482689615752

深拷貝:

就是將原文件內部元素完全拷貝,不會將因為第二層元素改變,另一個也會改變

深拷貝方法:

import copy

list_new = copy.deepcopy()

python學習之深淺拷貝