python 深淺拷貝

2021-08-28 03:07:43 字數 1121 閱讀 6609

import copy

a=[1,2,[「a」,」b」]] #原始物件

b=a #賦值,傳物件的引用

c=copy.copy(a) #物件拷貝,淺拷貝

d=copy.deepcopy(a) #物件拷貝,深拷貝

print(「列表a元素的id:」,id(a),id(a[0]),id(a[1]),id(a[2][0]),id(a[2][1]))

print(「列表b元素的id:」,id(b),id(b[0]),id(b[1]),id(b[2][0]),id(b[2][1]))

print(「列表c元素的id:」,id(c),id(c[0]),id(c[1]),id(c[2][0]),id(c[2][1]))

print(「列表d元素的id:」,id(d),id(d[0]),id(d[1]),id(d[2][0]),id(d[2][1]))

print(「———————–分割線———————–」)

print(「a列表修改後,列表a元素的id:」,id(a),id(a[0]),id(a[1]),id(a[2][0]),id(a[2][1]))

print(「a列表修改後,列表b元素的id:」,id(b),id(b[0]),id(b[1]),id(b[2][0]),id(b[2][1]))

print(「a列表修改後,列表c元素的id:」,id(c),id(c[0]),id(c[1]),id(c[2][0]),id(c[2][1]))#a和

c是2塊不同的記憶體

print(「a列表修改後,列表d元素的id:」,id(d),id(d[0]),id(d[1]),id(d[2][0]),id(d[2][1]))

print(「a=」,a)

print(「b=」,b)

print(「c=」,c)

print(「d=」,d)

python 中的物件之間賦值時是按引用傳遞的,如果需要拷貝物件,需要使用標準庫中的copy模組

1.copy.copy淺拷貝 只拷貝父物件,不會拷貝物件的內部的子物件

2.copy.deepcopy 深拷貝 拷貝物件及其子物件

python 深淺拷貝案例 python 深淺拷貝

深淺拷貝 對於 數字 和 字串 而言,賦值 淺拷貝和深拷貝無意義,因為其永遠指向同乙個記憶體位址 import copy a1 22255 a2 22255 print id a1 id a2 3428240 3428240 對於字典 元祖 列表 而言,進行賦值 淺拷貝和深拷貝時,其記憶體位址的變化...

python 深淺拷貝

建立乙個寬度為3,高度為4的陣列 mylist 0 3 4 0,0,0 0,0,0 0,0,0 0,0,0 但是當操作mylist 0 1 1時,發現整個第二列都被賦值,變成 0,1,0 0,1,0 0,1,0 0,1,0 list n n shallow copies of list concat...

python深淺拷貝

python 深淺拷貝 shallow copy 和 deep copy 對於乙個列表,列表裡面可以再放入乙個列表 1 若想複製這乙個列表,使用列表的普通的copy 方法,只能拷貝出列表裡表層的元素,而列表裡的列表卻無法拷貝,只能指向前乙個列表.修改拷貝出的列表裡列表裡的元素,原來的列表會發生改變....