python深淺拷貝

2021-09-25 13:29:14 字數 545 閱讀 3931

深淺拷貝

a = [1,[2,3]]

b = a #直接賦值,就是完全引用,a,b共享

c = a[:] #淺拷貝,形成新的

d = list(a)

a[0] = "a"

print(id(a[0]),id(b[0]),id(c[0]),id(d[0])) #前兩個位址一樣,後兩個位址一樣

#復合結構物件

a = [1,[2,3]]

b = a

c = a[:] #淺拷貝,複雜元素,直接拿來用

d = list(a)

e = copy.deepcopy(a) #深拷貝

a[1][0] = "change"

print(id(a[1][0]),id(b[1][0]),id(c[1][0]),id(d[1][0]))

#深拷貝:列印id可知,全部形成新物件

#直接賦值 = 完全引用

#淺拷貝 = 簡單元素(不包含子元素)進行拷貝形成新物件,複雜元素(包含子元素)拿來引用,不生成新物件

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