色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

簡述Python中深淺拷貝(copy)

馬哥Linux運維 ? 來源:CSDN ? 作者:南枝向暖北枝寒 ? 2021-07-29 16:55 ? 次閱讀

在工作中,常涉及到數據的傳遞,在數據傳遞使用過程中,可能會發生數據被修改的問題。為了防止數據被修改,就需要在傳遞一個副本,即使副本被修改,也不會影響原數據的使用。為了生成這個副本,就產生了拷貝。今天就說一下Python中的深淺拷貝問題。

一、深淺copy

賦值運算

l1 = [1, 2, 3, [22, 33]]l2 = l1l1.append(666)print(l1) # [1, 2, 3, [22, 33], 666]print(l2) # [1, 2, 3, [22, 33], 666]

圖解:

913a8f9c-edff-11eb-a97a-12bb97331649.png

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

淺copy

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

#例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列表中第一個元素改為6l1 = [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]]

小結:

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

深copy

import copyl1 = [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]]

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

91dcdfcc-edff-11eb-a97a-12bb97331649.png

小結:

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

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

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

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

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

總結:

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

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

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

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

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

Python 有多種方式實現淺拷貝,copy模塊的copy 函數 ,對象的 copy 函數 ,工廠方法,切片等。

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

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

原文鏈接:https://blog.csdn.net/mall_lucy/article/details/104531218

文章轉載:CSDN

(版權歸原作者所有,侵刪)

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4798

    瀏覽量

    84810

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

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    M.2硬盤拷貝,該怎么選擇適合的工具?FPGA拷貝機到底有沒有用?

    探索SP-B1011 M.2 FPGA硬盤拷貝機,一款支持NVMe和SATA接口的高效數據管理工具。無需計算機,即插即用,提供快速拷貝、全盤拷貝和安全抹除模式。適用于個人和專業IT人士,滿足各種數據備份和恢復需求。
    的頭像 發表于 12-12 11:02 ?183次閱讀
    M.2硬盤<b class='flag-5'>拷貝</b>,該怎么選擇適合的工具?FPGA<b class='flag-5'>拷貝</b>機到底有沒有用?

    Pythondict支持多個key的方法

    ? 在Python,字典(dict)是一種非常強大的數據結構,它允許我們通過鍵(key)來存儲和檢索值(value)。有時候,我們可能想要根據多個鍵來檢索或操作字典的數據。雖然Python
    的頭像 發表于 11-29 15:59 ?185次閱讀

    批量音頻檔案拷貝最佳方案:解決播放錯誤與拷貝不完全問題

    本文討論了在數字化時代,專業SD拷貝機在批量拷貝音頻檔案至MicroSD卡的應用優勢。相較于傳統計算機拷貝,SD拷貝機能夠完整復制包括隱藏
    的頭像 發表于 11-23 16:12 ?166次閱讀
    批量音頻檔案<b class='flag-5'>拷貝</b>最佳方案:解決播放錯誤與<b class='flag-5'>拷貝</b>不完全問題

    Python多線程和多進程的區別

    Python作為一種高級編程語言,提供了多種并發編程的方式,其中多線程與多進程是最常見的兩種方式之一。在本文中,我們將探討Python多線程與多進程的概念、區別以及如何使用線程池與進程池來提高并發執行效率。
    的頭像 發表于 10-23 11:48 ?416次閱讀
    <b class='flag-5'>Python</b><b class='flag-5'>中</b>多線程和多進程的區別

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

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

    如何使用SCP和Rsync遠程拷貝文件

    scp是secure copy的簡寫,用于在Linux下進行遠程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨服務器,而且scp傳輸是加密的。可能會稍微影響一下速度。當你
    的頭像 發表于 09-29 15:54 ?440次閱讀

    怎么導出python邊緣計算的APP?

    怎么導出python邊緣計算的APP,想進行修改又找不到源碼
    發表于 07-25 06:13

    Python在AI的應用實例

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

    copy table存放的是否為初始值不為0的data段所在PFlash的地址信息?

    1. copy table存放的是否為初始值不為0的data段所在PFlash的地址信息?(比如:int a = 10; 變量a被存放到了PFlash的0x8030001c處,copy table
    發表于 07-02 07:51

    esp32c3怎樣保護flash的代碼不被拷貝

    想知道這個c3怎樣保護flash的代碼不被拷貝。這個內置flash的代碼有沒有可能被拷貝出來,如果可以拷貝,應該怎樣保護。 另一個問題
    發表于 06-19 06:32

    瑞芯微開發板copy 安卓圖像識別軟件copy

    瑞芯微開發板copy,內置安卓圖像識別軟件,需要copy整個板、系統、識別軟件,歡迎有經驗的同行洽談
    發表于 05-29 18:38

    為什么NAND FLASH沒有COPY back函數?

    為什么我的NAND FLASH 沒有COPY back函數
    發表于 05-10 07:21

    AURIX TC387代碼拷貝到DSPR和PSPR執行的區別?

    1. 代碼拷貝到DSPR和PSPR執行的區別? 2. DSPR有什么安全機制可以保護拷貝的代碼不會被篡改?
    發表于 02-02 06:58

    pythonopen函數的用法詳解

    pythonopen函數的用法詳解 Python的open()函數用于打開文件。它接受文件名和模式作為參數,并返回一個文件對象。文件對象可用于讀取、寫入和管理文件。 open()函
    的頭像 發表于 01-30 15:31 ?2163次閱讀
    主站蜘蛛池模板: 亚洲色欲国产AV精品综合| 久久久久久久99精品免费观看| 午夜理伦大片一级| 久久大胆视频| 国产成人午夜精品免费视频 | 快播看av| 国产囗交10p| 成人手机在线观看| 2224x最新网站| 亚洲午夜性春猛交XXXX| 天天综合亚洲综合网站| 欧美丰满少妇久久无码精品| 久久久96| 九九九精品国产在线| 国产精品日韩欧美一区二区三区| seyeye高清视频在线| 69xx欧美| 中文字幕不卡免费高清视频| 亚洲精品在线不卡| 亚洲AV福利天堂一区二区三| 挺弄抽插喷射HH| 色欲AV亚洲情无码AV蜜桃| 欧美亚洲日韩欧洲不卡| 男人一进一出桶女人视频| 菊地凛子av| 久热这里只有精品99国产6| 久久99热狠狠色一区二区| 黑丝美女娇喘| 极品少妇小泬50PTHEPON| 国产在线精品视亚洲不卡| 国产精品久久人妻无码网站一区L 国产精品久久人妻无码蜜 | 久久精品亚洲AV无码三区观看 | 肉小说高h| 日本男女动态图| 亲胸揉胸膜下刺激视频网站APP| 免费看的一级毛片| 免费果冻传媒2021在线观看| 麻豆精品乱码WWW久久密| 伦理79电影网在线观看| 久青草国产在视频在线观看| 恋夜影视列表免费安卓手机版 |