扣丁學堂Python培訓簡述Python深拷貝與淺拷貝的區別

本篇文章扣丁學堂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中的元素

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從入門到精通開發實戰技能。

相關文章
相關標籤/搜索