python中的淺拷貝和深拷貝

2022-08-31 14:18:12 字數 1127 閱讀 5096

1.淺拷貝

copy.copy()

淺拷貝是拷貝只拷貝最外一層(這裡所說的拷貝是重新生成乙個記憶體位址,也就是只有最外層的位址是重新生成)

import

copy

li=[23,45,['

wew',35,[33,00]]]

li1=copy.copy(li)

print

(id(li),id(li1))

print

(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()

深拷貝是除了最裡面一層的其他的都拷貝(最裡面一層只拷貝值 不重新生成乙個記憶體位址)

import

copy

li=[23,[2,99],['

wew',35,[33,0]]]

li1=copy.deepcopy(li)

print

(li1)

print

(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.對於數字和字串是完全拷貝

import

copy

s1='

wang

's2=copy.copy(s1)

print

(s2)

print

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