python 攜程,python中淺拷貝和深度拷貝的區別

 2023-10-07 阅读 27 评论 0

摘要:在很多面試題中都會問到淺拷貝跟深度拷貝的區別,前幾天一個朋友也問到了我淺拷貝跟深度拷貝到底有什么區別,這里就簡單舉栗子講一下兩者的區別。 淺拷貝(copy()):拷貝父對象,不會拷貝對象的內部的子對象 深拷貝(?copy.deepc

在很多面試題中都會問到淺拷貝跟深度拷貝的區別,前幾天一個朋友也問到了我淺拷貝跟深度拷貝到底有什么區別,這里就簡單舉栗子講一下兩者的區別。

淺拷貝(copy()):拷貝父對象,不會拷貝對象的內部的子對象

深拷貝(?copy.deepcopy()):完全拷貝父對象跟子對象

import copyl = [1, 2, ['a', 'b']]
s_copy = l.copy()  # 淺拷貝
d_copy = copy.deepcopy(l)  # 深拷貝
l.append(3)
l[2].append('c')print(l)  # [1, 2, ['a', 'b', 'c'], 3]
print(s_copy)  # [1, 2, ['a', 'b', 'c']]
print(d_copy)  # [1, 2, ['a', 'b']]

通過上面的輸出結果可以很好的看到,深拷貝是直接復制了所有的父對象跟子對象,原來的不管怎么變都跟他沒關系,淺拷貝只是復制了當前的父對象,如果子對象發生變化,淺拷貝也是會跟著改變的。

深入解析:

1、b = a.copy():?淺拷貝, a 和 b 是一個獨立的對象,但他們的子對象還是指向統一對象(是引用)。

2、b = copy.deepcopy(a):?深度拷貝, a 和 b 完全拷貝了父對象及其子對象,兩者是完全獨立的。

?

轉載于:https://www.cnblogs.com/zzqit/p/10229059.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/125409.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息