Python基礎(chǔ)-python中的深拷貝和淺拷貝(12)

概述:

  • 淺拷貝是對于一個對象的頂層拷貝,通俗的理解是:拷貝了引用,并沒有拷貝內(nèi)容,就是對要拷貝的對象復(fù)制(復(fù)制屬性和對象引用)一份,但是對于其內(nèi)部的子對象就不復(fù)制了,而是直接引用
  • 深拷貝是對于一個對象所有層次的拷貝,并將其存在新開辟的空間里。
  • 等號只是將該對象的引用復(fù)制一份,任何一個引用的對象發(fā)生變化,其它引用的對象也會發(fā)生變化,因此多個引用本身就是指向一個對象。
注意:is和==區(qū)別
  • is是比較兩個引用是否指向了同一個對象(引用比較)
  • ==是比較兩個對象是否相等
import copy
a=[1,2,3]
b=[4,5,6]
c=[300,a,b]
f=c
print(a)
print(b)
print(c)
print(f)
'''
[1, 2, 3]
[4, 5, 6]
[300, [1, 2, 3], [4, 5, 6]]
[300, [1, 2, 3], [4, 5, 6]]
'''
a.append(7)
f[0]=100
print(a)
print(c)
print(f)
print(f is c)
'''
[1, 2, 3, 7]
[100, [1, 2, 3, 7], [4, 5, 6]]
[100, [1, 2, 3, 7], [4, 5, 6]]
True
'''
#淺拷貝:拷貝對象中的元素值和對象引用
d=copy.copy(c)
#深拷貝:遞歸拷貝對象中的元素值和對象
e=copy.deepcopy(c)
b.append(8)
c[0]=500
print(c)
print(d)
print(e)
print(c is e)
print(c is d)
'''
[500, [1, 2, 3, 7], [4, 5, 6, 8]]
[100, [1, 2, 3, 7], [4, 5, 6, 8]]
[100, [1, 2, 3, 7], [4, 5, 6]]
False
False
'''
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容