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...