圖解Python中淺拷貝copy()和深拷貝deepcopy()的區(qū)別
關(guān)于淺拷貝和深拷貝想必大家在學(xué)習(xí)中遇到很多次,這也是面試中常常被問到的問題,借由這個時間,整理一下淺拷貝和深拷貝的關(guān)系
先從一個簡單的例子入手吧 定義一個數(shù)組的嵌套結(jié)構(gòu)
a = [1,2,3,[4,5,[6]]]
看一下它的gable frame

當我們做一下淺拷貝copy()時,global frame
a = [1,2,3,[4,5,[6]]] //淺拷貝 b = a.copy()

可以看到,淺拷貝對淺層的數(shù)組進行了復(fù)制,但深層的引用仍然是指向了原來的引用,這樣就會在操作b數(shù)組時,會對原來的數(shù)組產(chǎn)生修改。
深拷貝
import copy a = [1,2,3,[4,5,[6]]] //淺拷貝 b = a.copy() //深拷貝 c = copy.deepcopy(a)

可以看到,深拷貝將其內(nèi)部引用也進行了拷貝,在進行數(shù)據(jù)操作時是完全使用新數(shù)組,對原來的數(shù)組不產(chǎn)生影響。
- 淺拷貝(shallowCopy)只是增加了一個指針指向已存在的內(nèi)存地址,
- 深拷貝(deepCopy)是增加了一個指針并且申請了一個新的內(nèi)存,使這個增加的指針指向這個新的內(nèi)存,
使用深拷貝的情況下,釋放內(nèi)存的時候不會因為出現(xiàn)淺拷貝時釋放同一個內(nèi)存的錯誤。
到此這篇關(guān)于圖解Python中淺拷貝copy()和深拷貝deepcopy()的區(qū)別的文章就介紹到這了,更多相關(guān)Python淺拷貝copy()和深拷貝deepcopy()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
windows安裝TensorFlow和Keras遇到的問題及其解決方法
這篇文章主要介紹了windows安裝TensorFlow和Keras遇到的問題及其解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-07-07
Python虛擬環(huán)境virtualenv安裝的詳細教程保姆級(Windows和linux)
本文詳細介紹了如何在Linux和Windows系統(tǒng)上安裝和配置virtualenv虛擬環(huán)境,包括依賴包安裝、系統(tǒng)環(huán)境變量設(shè)置、激活和退出環(huán)境,以及在PyCharm中的應(yīng)用和導(dǎo)出依賴文件,需要的朋友可以參考下2024-09-09
Python?Pandas刪除替換并提取其中的缺失值NaN(dropna,fillna,isnull)
這篇文章主要給大家介紹了關(guān)于Python?Pandas刪除替換并提取其中的缺失值NaN(dropna,fillna,isnull)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Pandas具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-01-01
python redis 批量設(shè)置過期key過程解析
這篇文章主要介紹了python redis 批量設(shè)置過期key過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
簡單快捷:NumPy入門教程的環(huán)境設(shè)置
NumPy是Python語言的一個擴展程序庫,支持高階大量的維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學(xué)函數(shù)庫,本教程是為那些想了解NumPy的基礎(chǔ)知識和各種功能的人準備的,它對算法開發(fā)人員特別有用,需要的朋友可以參考下2023-10-10
PyCharm 2020.1版安裝破解注冊碼永久激活(激活到2089年)
這篇文章主要介紹了PyCharm 2020.1版安裝破解注冊碼永久激活(激活到2089年),需要的朋友可以參考下2020-09-09

