圖解Python中深淺copy(通俗易懂)
一、深淺copy
賦值運(yùn)算
l1 = [1, 2, 3, [22, 33]] l2 = l1 l1.append(666) print(l1) # [1, 2, 3, [22, 33], 666] print(l2) # [1, 2, 3, [22, 33], 666]
圖解:
注意:l2 = l1
是一個(gè)指向,是賦值,和深淺copy無(wú)關(guān)。
淺copy
其實(shí)列表是一個(gè)一個(gè)的槽位,每個(gè)槽位存儲(chǔ)的是該對(duì)象的內(nèi)存地址
例1. 給大列表添加元素 l1 = [1, 2, 3, [22, 33]] l2 = l1.copy() # 或者下面這種方式,也是淺copy # import copy # l2 = copy.copy(l1) l1.append(666) print(l1) # [1, 2, 3, [22, 33], 666] print(l2) # [1, 2, 3, [22, 33]] 例2. 給小列表添加元素 l1 = [1, 2, 3, [22, 33]] l2 = l1.copy() l1[-1].append(666) print(l1) # [1, 2, 3, [22, 33, 666]] print(l2) # [1, 2, 3, [22, 33, 666]]、 例3. 將l1列表中第一個(gè)元素改為6 l1 = [1, 2, 3, [22, 33]] l2 = l1.copy() l1[0] = 6 print(l1) # [6, 2, 3, [22, 33]] print(l2) # [1, 2, 3, [22, 33]]
圖解:
例1
例2
例3
總結(jié):
淺copy:會(huì)在內(nèi)存中新開(kāi)辟一個(gè)空間,存放這個(gè)copy的列表,但是列表里面的內(nèi)容還是沿用之前對(duì)象的內(nèi)存地址。
注意:
切片中,如果是全切,屬于淺copy。
深copy
import copy l1 = [1, 2, 3, [22, 33]] l2 = copy.deepcopy(l1) l1.append(666) print(l1) # [1, 2, 3, [22, 33], 666] print(l2) # [1, 2, 3, [22, 33]]
圖解:
本質(zhì)如下圖:
但是python對(duì)深copy做了一個(gè)優(yōu)化,將可變的數(shù)據(jù)類(lèi)型在內(nèi)存中重新創(chuàng)建一份,而不可變的數(shù)據(jù)類(lèi)型則沿用之前的,所以內(nèi)存中是下面這樣的:
總結(jié):
深copy:會(huì)在內(nèi)存中開(kāi)辟新空間,將原列表以及列表里面的可變數(shù)據(jù)類(lèi)型重新創(chuàng)建一份,不可變數(shù)據(jù)類(lèi)型則沿用之前的。
到此這篇關(guān)于圖解Python中深淺copy(通俗易懂)的文章就介紹到這了,更多相關(guān)Python 深淺拷貝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對(duì)django xadmin自定義菜單的實(shí)例詳解
今天小編就為大家分享一篇對(duì)django xadmin自定義菜單的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01python 瀑布線指標(biāo)編寫(xiě)實(shí)例
這篇文章主要介紹了python 瀑布線指標(biāo)編寫(xiě)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06詳解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
這篇文章主要介紹了詳解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04使用python讀寫(xiě)txt和json(jsonl)大文件的方法步驟
在Python中讀取txt和json(jsonl)大文件并保存到字典是一項(xiàng)非常常見(jiàn)的操作,這篇文章主要給大家介紹了關(guān)于使用python讀寫(xiě)txt和json(jsonl)大文件的方法步驟,需要的朋友可以參考下2023-12-12Python量化因子測(cè)算與繪圖超詳細(xì)流程代碼
這篇文章主要介紹了Python量化因子測(cè)算與繪圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-02-02Python實(shí)現(xiàn)敏感詞過(guò)濾的五種方法
在我們生活中的一些場(chǎng)合經(jīng)常會(huì)有一些不該出現(xiàn)的敏感詞,我們通常會(huì)使用*去屏蔽它,一些罵人的敏感詞和一些政治敏感詞都不應(yīng)該出現(xiàn)在一些公共場(chǎng)合中,這個(gè)時(shí)候我們就需要一定的手段去屏蔽這些敏感詞,下面我來(lái)介紹一些簡(jiǎn)單版本的Python敏感詞屏蔽的方法,需要的朋友可以參考下2025-04-04opencv-python 開(kāi)發(fā)環(huán)境的安裝、配置教程詳解
這篇文章主要介紹了opencv-python 開(kāi)發(fā)環(huán)境的安裝、配置,本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09