Python中關於深複製和淺複製詳細解釋

2022-05-12 18:16:56 字數 1903 閱讀 1958

1、copy屬性

s =

d =

#在python3.0中 只有set和dict有copy屬性,其餘都沒有

print(s.copy())

print(d.copy())

2、copy模組中的copy方法

import copy

#當字典,列表,元組中巢狀時

l=[1,2,3,[1,2,3,4],[5,6,7,[1,3,4]]]

#淺複製,所謂的淺複製是當裡面巢狀時,公用巢狀物件

l_copy = copy.copy(l)

print(l_copy) #輸出:[1,2,3,[1,2,3,4],[5,6,7,[1,3,4]]]

print(l) #輸出[1,2,3,[1,2,3,4],[5,6,7,[1,3,4]]]:

l[3][0]=100

print(l_copy) #輸出:[1,2,3,[100,2,3,4],[5,6,7,[1,3,4]]]

print(l) #輸出:[1,2,3,[100,2,3,4],[5,6,7,[1,3,4]]]

l_copy[3][0]=-100

print(l_copy) #輸出:[1,2,3,[-100,2,3,4],[5,6,7,[1,3,4]]]

print(l) #輸出:[1,2,3,[-100,2,3,4],[5,6,7,[1,3,4]]]

#因為裡面巢狀的物件是公用的。所以相互影響

l[0]=1111

print(l) #輸出:[1111,2,3,[-100,2,3,4],[5,6,7,[1,3,4]]]

print(l_copy) #輸出:[1,2,3,[-100,2,3,4],[5,6,7,[1,3,4]]]

#頂層的物件不是通用的,所以不影響

print('*'*8)

#深複製,所謂的深複製是當裡面巢狀時,不公用巢狀物件

l_copy = copy.deepcopy(l)

print(l_copy) #輸出:[1,2,3,[1,2,3,4],[5,6,7,[1,3,4]]]

print(l) #輸出[1,2,3,[1,2,3,4],[5,6,7,[1,3,4]]]:

l[3][0]=100

print(l_copy) #輸出:[1,2,3,[1,2,3,4],[5,6,7,[1,3,4]]]

print(l) #輸出:[1,2,3,[100,2,3,4],[5,6,7,[1,3,4]]]

l_copy[3][0]=-100

print(l_copy) #輸出:[1,2,3,[-100,2,3,4],[5,6,7,[1,3,4]]]

print(l) #輸出:[1,2,3,[100,2,3,4],[5,6,7,[1,3,4]]]

#因為裡面巢狀的物件不是公用的。所以沒有影響

l[0]=1111

print(l) #輸出:[1111,2,3,[100,2,3,4],[5,6,7,[1,3,4]]]

print(l_copy) #輸出:[1,2,3,[-100,2,3,4],[5,6,7,[1,3,4]]]

#頂層的物件不是通用的,所以不影響

3、分片複製時淺複製

l = [1,2,3,[4,6,42]]

l_copy = l[:]

print(l) #輸出[1,2,3,[4,6,42]]

print(l_copy) #輸出[1,2,3,[4,6,42]]

l[3][0]=-100

print(l) #輸出[1,2,3,[-100,6,42]]

print(l_copy) #輸出[1,2,3,[-100,6,42]]

總結一下就是:

淺複製共享內嵌物件,深複製重新建立乙個新物件

關於python切片淺複製和深複製

剛上了第二週python課,這節課是關於python序列之列表的 整理一下自己在學習過程中遇到困惑的地方,自用。首先python中有乙個符號 這個符號的作用是切片複製,它不同於賦值,只是將陣列的值複製過去,但是其記憶體位址是不同的。a 1,2,3 b a print a is b 控制台輸出結果為t...

python 深複製和淺複製

l1 1,2,3 4,5 l2 list l1 l1 1,2,3 4,5 99 l2 1,2,3 4,5 l1 1 remove 2 l1 1,3 4,5 99 l2 1,3 4,5 l2 1 11,12 l2 2 10,11 l1 1,3,11,12 4,5 99 l2 1,3,11,12 4,5...

python中深複製與淺複製

從定義上來說 1 copy.copy 是淺複製,只拷貝父物件,不會拷貝物件的內部的子物件。2 copy.deepcopy 是深複製,拷貝物件及其子物件。import copy a 1,2,3,4,a b 原始物件 b a 賦值,傳物件的引用 c copy.copy a 物件拷貝,淺拷貝 d copy...