0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

實例介紹Python中深淺拷貝

數(shù)據(jù)分析與開發(fā) ? 來源:數(shù)據(jù)分析與開發(fā) ? 作者:數(shù)據(jù)分析與開發(fā) ? 2020-12-16 11:34 ? 次閱讀

【導語】:在工作中,常涉及到數(shù)據(jù)的傳遞,在數(shù)據(jù)傳遞使用過程中,可能會發(fā)生數(shù)據(jù)被修改的問題。為了防止數(shù)據(jù)被修改,就需要在傳遞一個副本,即使副本被修改,也不會影響原數(shù)據(jù)的使用。為了生成這個副本,就產(chǎn)生了拷貝。今天就說一下Python中的深淺拷貝問題。

一、深淺copy

賦值運算

注意:l2 = l1是一個指向,是賦值,和深淺copy無關。

淺copy

其實列表是一個一個的槽位,每個槽位存儲的是該對象的內存地址

#例1. 給大列表添加元素

例2

例3

小結:

淺copy:會在內存中新開辟一個空間,存放這個copy的列表,但是列表里面的內容還是沿用之前對象的內存地址。

深copy

但是python對深copy做了一個優(yōu)化,將可變的數(shù)據(jù)類型在內存中重新創(chuàng)建一份,而不可變的數(shù)據(jù)類型則沿用之前的,所以內存中是下面這樣的:

小結:

深copy:會在內存中開辟新空間,將原列表以及列表里面的可變數(shù)據(jù)類型重新創(chuàng)建一份,不可變數(shù)據(jù)類型則沿用之前的。

為什么Python默認的拷貝方式是淺拷貝?

時間角度:淺拷貝花費時間更少。

空間角度:淺拷貝花費內存更少。

效率角度:淺拷貝只拷貝頂層數(shù)據(jù),一般情況下比深拷貝效率高。

總結:

不可變對象在賦值時會開辟新空間。

可變對象在賦值時,修改一個的值,另一個也會發(fā)生改變。

深、淺拷貝對不可變對象拷貝時,不開辟新空間,相當于賦值操作。

淺拷貝在拷貝時,只拷貝第一層中的引用,如果元素是可變對象,并且被修改,那么拷貝的對象也會發(fā)生變化。

深拷貝在拷貝時,會逐層進行拷貝,直到所有的引用都是不可變對象為止。

Python 有多種方式實現(xiàn)淺拷貝,copy模塊的copy 函數(shù) ,對象的 copy 函數(shù) ,工廠方法,切片等。

大多數(shù)情況下,編寫程序時,都是使用淺拷貝,除非有特定的需求。

淺拷貝的優(yōu)點:拷貝速度快,占用空間少,拷貝效率高。

責任編輯:xj

原文標題:圖解 Python 中深淺拷貝

文章出處:【微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)

    關注

    8

    文章

    6837

    瀏覽量

    88754
  • python
    +關注

    關注

    55

    文章

    4774

    瀏覽量

    84386
  • 編程拷貝
    +關注

    關注

    0

    文章

    2

    瀏覽量

    5528

原文標題:圖解 Python 中深淺拷貝

文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    磁盤拷貝機會拷貝刪除的內容嗎

    磁盤拷貝機,也稱為硬盤克隆器或磁盤復制器,是一種用于復制硬盤驅動器內容的設備。它可以將一個硬盤上的所有數(shù)據(jù),包括操作系統(tǒng)、程序、文件和設置,復制到另一個硬盤上。這種設備在數(shù)據(jù)備份、系統(tǒng)遷移、硬盤
    的頭像 發(fā)表于 10-14 15:38 ?221次閱讀

    Python在AI的應用實例

    Python在人工智能(AI)領域的應用極為廣泛且深入,從基礎的數(shù)據(jù)處理、模型訓練到高級的應用部署,Python都扮演著至關重要的角色。以下將詳細探討Python在AI的幾個關鍵應用
    的頭像 發(fā)表于 07-19 17:16 ?881次閱讀

    Python的人工智能框架與實例

    在人工智能(AI)領域,Python因其簡潔的語法、豐富的庫和強大的社區(qū)支持,成為了最受歡迎的編程語言之一。本文將詳細介紹Python的人工智能框架,并通過具體
    的頭像 發(fā)表于 07-15 14:54 ?1510次閱讀

    使用Python進行自然語言處理

    在探討使用Python進行自然語言處理(NLP)的廣闊領域時,我們首先需要理解NLP的基本概念、其重要性、Python在NLP的優(yōu)勢,以及如何通過Python實現(xiàn)一些基礎的NLP任務
    的頭像 發(fā)表于 07-04 14:40 ?378次閱讀

    Python智能家居系統(tǒng)代碼介紹

    Python智能家居系統(tǒng)是一種基于Python編程語言開發(fā)的智能家居控制系統(tǒng),在現(xiàn)代家庭得到了越來越廣泛的應用。本文將詳細介紹Python
    的頭像 發(fā)表于 01-25 09:46 ?1224次閱讀

    split在python的用法

    split在python的用法 split()是Python中一個非常常用的字符串函數(shù),它能夠根據(jù)指定的分隔符將一個字符串分割成多個子字符串,并返回一個包含這些子字符串的列表。本文將詳細介紹
    的頭像 發(fā)表于 12-25 15:12 ?1951次閱讀

    python shell怎么用

    Python Shell是一種交互式解釋器,可以通過命令行直接運行Python代碼。在Shell,可以輸入一行代碼并立即得到結果,非常適合于測試、嘗試新代碼或進行簡單的任務。本文將詳細介紹
    的頭像 發(fā)表于 11-29 14:36 ?1078次閱讀

    什么是零拷貝技術

    在傳統(tǒng)操作系統(tǒng)的數(shù)據(jù)傳輸過程,系統(tǒng)內部會在磁盤、內存、緩存多次進行數(shù)據(jù)拷貝,每次都會占用CPU的資源,數(shù)據(jù)量小的時候還好。 隨著數(shù)據(jù)量的增加,CPU的開銷也會持續(xù)增加,尤其是在機器人圖像數(shù)據(jù)
    的頭像 發(fā)表于 11-27 16:20 ?429次閱讀
    什么是零<b class='flag-5'>拷貝</b>技術

    pythontext的用法

    可以使用text(字符串)進行各種操作,例如創(chuàng)建、訪問、修改、連接、比較和搜索等。下面將詳細介紹Python中使用text的各種用法。 創(chuàng)建和訪問文本: 在Python,我們可以使用
    的頭像 發(fā)表于 11-23 15:46 ?3274次閱讀

    Python自帶的命令窗口

    交互式解釋器即時地解釋和執(zhí)行用戶輸入的命令,使得用戶可以快速嘗試和調試代碼片段。這篇文章將詳細介紹Python自帶的命令窗口的特點、用途以及如何使用。 首先,Python自帶的命令窗口提供了一個與
    的頭像 發(fā)表于 11-22 14:02 ?860次閱讀

    python如何引入math庫

    Python,要使用math庫,首先需要先引入它。math庫是Python的一個標準庫,它提供了許多數(shù)學函數(shù)和常數(shù)。通過使用math庫,我們可以進行各種數(shù)學運算,例如三角函數(shù)、指數(shù)、對數(shù)、冪運算
    的頭像 發(fā)表于 11-22 11:03 ?3999次閱讀

    pythonnumber代表什么

    (bool)。本文將詳細介紹這些number類型以及它們在Python的應用。 首先,我們來介紹整數(shù)類型(int)。整數(shù)是Python中最
    的頭像 發(fā)表于 11-22 09:50 ?1840次閱讀

    Python如何表達復數(shù)

    Python,可以使用j或J來表示虛部。 以下是關于Python復數(shù)的詳細介紹: 創(chuàng)建復數(shù) 要創(chuàng)建一個復數(shù),可以直接使用復數(shù)的實部和虛部
    的頭像 發(fā)表于 11-21 16:50 ?2082次閱讀

    pythontuple的用法

    使用逗號進行分隔。元組在Python具有許多有用的特性和用法,本文將詳盡、詳實、細致地介紹Python中元組的全部內容。 首先,元組可以用來存儲多個值。與列表不同的是,元組一旦創(chuàng)建就
    的頭像 發(fā)表于 11-21 16:27 ?896次閱讀

    python去除list重復的數(shù)據(jù)

    Python是一個強大的編程語言,提供了許多解決問題的方法和功能。其中一個常見的問題是如何去除列表的重復數(shù)據(jù)。在本文中,我們將詳細介紹Python中去除列表
    的頭像 發(fā)表于 11-21 15:49 ?1514次閱讀