python 深淺拷貝

2021-10-22 06:29:14 字數 855 閱讀 8663

說明:深淺拷貝是針對可變元素(引用型別)而言的,不可變元素不存在深淺拷貝的問題

示例:

import copy

# 值型別(不可變型別)

a =123

a2 = a

a3 = copy.copy(a)

a4 = copy.deepcopy(a)

print

(a is a2)

print

(a is a3)

print

(a is a4)

# 引用型別(可變型別)

b =[1,

2,[3

,4]]

b2 = b

# 淺拷貝:只拷貝物件本身,內部元素只拷貝引用

b3 = copy.copy(b)

# 深拷貝:不但拷貝物件本身,還會拷貝內部元素

b4 = copy.deepcopy(b)

print

(b is b2)

print

(b is b3)

print

(b is b4)b[0

]=100b[2]

[0]=

300print

(b2)

print

(b3)

print

(b4)

c =[1,

2,[3

,4]]

# 淺拷貝

d = c.copy(

)print

(c is d)c[0

]=100c[2]

[0]=

200print

(d)

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 方法,只能拷貝出列表裡表層的元素,而列表裡的列表卻無法拷貝,只能指向前乙個列表.修改拷貝出的列表裡列表裡的元素,原來的列表會發生改變....