本篇文章扣丁學堂Python培訓小編給你們分享一下Python深拷貝與淺拷貝的區別,對Python開發技術感興趣的小夥伴就隨小編來看一下吧。python
Python培訓
python中淺拷貝和深拷貝的區別以下:微信
一、copy.copy 淺拷貝 只拷貝父對象,不會拷貝對象的內部的子對象。學習
二、copy.deepcopy 深拷貝 拷貝對象及其子對象人工智能
若是拷貝對象是一個一維列表,那麼淺拷貝和深拷貝沒什麼不一樣,都是從新申請一個新的內存地址。視頻
import copy對象
list1 = [1,2,3,4]教程
print(id(list1))內存
list2 = list1.copy()開發
print(list2)入門
print(id(list2))
print(list1 is list2)
list3 = copy.deepcopy(list1)
print(list3)
print(id(list3))
print(list1 is list3)
96011592
[1, 2, 3, 4]
95979528
False
[1, 2, 3, 4]
31271112
False
所以,list1的改變不會影響到list2與list3。可是對於複雜一些的列表,例如嵌套列表、字典嵌套列表。淺拷貝與深拷貝二者便展現出徹底不一樣的結果。
import copy
list1 = [1,2,3,4,[5,6]]
print('list1的id:',id(list1))
print('list1第4個元素的id:',id(list1[4]))
list2 = list1.copy()
print(list2)
print('list2的id:',id(list2))
print('list2第4個元素的id:',id(list2[4]))
list3 = copy.deepcopy(list1)
print(list3)
print('list3的id:',id(list3))
print('list3第4個元素的id:',id(list3[4]))
list1[2] = 7
list14 = 8
print('list1:',list1)
print('list2:',list2)
print('list3:',list3)
list1的id: 95979528
list1第4個元素的id: 96011592
[1, 2, 3, 4, [5, 6]]
list2的id: 40773832
list2第4個元素的id: 96011592 #子對象的id值同樣,表示淺拷貝沒有拷貝對象,只是使用了列表的引用
[1, 2, 3, 4, [5, 6]]
list3的id: 96023432
list3第4個元素的id: 40773704
list1: [1, 2, 7, 4, [5, 8]]
list2: [1, 2, 3, 4, [5, 8]] #父對象不變,子對象變
list3: [1, 2, 3, 4, [5, 6]] #父子對象都不改變
以上能夠說明淺拷貝與深拷貝的區別。想要了解更多關於Python和人工智能方面內容的小夥伴,請關注扣丁學堂Python培訓官網、微信等平臺,扣丁學堂IT職業在線學習教育平臺爲您提供權威的Python開發環境搭建視頻,Python培訓後的前景無限,行業薪資和將來的發展會愈來愈好的,扣丁學堂老師精心推出的Python視頻教程定能讓你快速掌握Python從入門到精通開發實戰技能。