1.淺拷貝
copy.copy()
淺拷貝是拷貝只拷貝最外一層(這裡所說的拷貝是重新生成乙個記憶體位址,也就是只有最外層的位址是重新生成)
importcopy
li=[23,45,['
wew',35,[33,00]]]
li1=copy.copy(li)
(id(li),id(li1))
(id(li[0]),id(li1[0]))
print(id(li[2][1]),id(li1[2][1]))
#輸出:35540704 5872576
#1625084720 1625084720
#1625084912 1625084912
#可以看出只有li與li1的位址不同 他們的元素的位址是相同的
2.深拷貝
copy.deepcopy()
深拷貝是除了最裡面一層的其他的都拷貝(最裡面一層只拷貝值 不重新生成乙個記憶體位址)
importcopy
li=[23,[2,99],['
wew',35,[33,0]]]
li1=copy.deepcopy(li)
(li1)
(id(li),id(li1))
print(id(li[2][2]),id(li1[2][2]))
print(id(li[2][2][0]),id(li1[2][2][0]))
#輸出:[23, [2, 99], ['wew', 35, [33, 0]]]
7734816 7183296
7687104 7734936
1625084880 1625084880
3.對於數字和字串是完全拷貝
importcopy
s1='
wang
's2=copy.copy(s1)
(s2)
(id(s1),id(s2))
#輸出:wang
#4868256 4868256
python中的淺拷貝和深拷貝
不得不說 python核心程式設計 是一本好書,看到其中一節做一下隨筆。在python中,當建立乙個物件後,然後把它賦給另乙個物件時,python並沒有去拷貝這個物件,而是拷貝了這個物件的引用。看不懂沒關係,我們看乙個例子。raw list first second 12 32 copy list ...
python中的深拷貝和淺拷貝
淺拷貝 copy 不拷貝物件的內容,僅僅拷貝子物件的引用 深拷貝 deepcopy 會連同拷貝子物件的記憶體,對子物件的修改不會影響源物件 下面用 來測試 import copy deftest copy 淺拷貝測試 a 10 20,5,6 b copy.copy a print a a,end t...
python中的淺拷貝和深拷貝
本篇介紹下python中的深拷貝和淺拷貝,主要從基本型別 類 不可變型別等方面進行介紹。1.介紹拷貝之前首先應該明白is和 的區別,即is表示同乙個物件,比較的是值 a 1000 b 1000 a b true a is bfalse class person object def init sel...