python深淺拷貝

2022-02-01 00:28:24 字數 1232 閱讀 7869

賦值引用,多變數使用同記憶體。對於可變資料物件,修改其中乙個,影響其他。

淺拷貝,只拷貝資料父物件,不拷貝其中子物件。

深拷貝,拷貝物件及其子物件。

賦值引用:(修改,所有多影響

list1=[1,2,3]

list2=list1

淺拷貝:(只拷貝第一層,其他的層公共)

import copy

list1=[1,2,3]

list2=copy.copy(list1)

list3=list[:]

深拷貝:(拷貝所有)(修改的修改,所有多不影響

import copy

list1 = [1, 2,3]

list2=copy.deepcopy(list1)

eg:list1=[1,2,3,['a',"b"],6]

list0=list1

list0[3][0]="b"

print(list1)

print(list0)

list0[0]="b"

print(list1)

print(list0)

list1=[1,2,3,['a',"b"],6]

list2=copy.copy(list1)

list2[3][0]="b"

print(list1)

print(list2)

list2[0]="b"

print(list1)

print(list0)

import copy

list1=[1,2,3,['a',"b"],6]

list3=list1[:]

list3[3][0]="b"

print(list1)

print(list3)

list3[0]="b"

print(list1)

print(list0)

import copy

list1=[1,2,3,['a',"b"],6]

list4=copy.deepcopy(list1)

list4[3][0]="b"

print(list1)

print(list4)

list4[0]="b"

print(list1)

print(list0)

以上**分別執行下你就明白了!

對於原理是很複雜的!!!!

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