在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    4821

    瀏覽量

    85776

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

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

收藏 人收藏

    評論

    相關推薦

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-內核空間與用戶空間的數據拷貝之獲取內核空間數據

    編譯成.ko并拷貝到開發板。 編寫測試應用源碼copy_to_user.c #include #include #include #include #include #include
    發表于 03-21 14:00

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-內核空間與用戶空間的數據拷貝之數據拷貝介紹

    空間之間進行數據傳輸時,需要進行數據拷貝操作。Linux內核提供了幾種方法來實現內核空間與用戶空間之間的數據拷貝copy_to_user()和copy_from_user()這兩個函
    發表于 03-20 11:50

    飛凌嵌入式ElfBoard ELF 1板卡-內核空間與用戶空間的數據拷貝之獲取內核空間數據

    /environment-setup-cortexa7hf-neon-poky-linux-gnueabi elf@ubuntu:~/work/test/03_內核空間與用戶空間的數據拷貝/copy_to_user$ make將驅動模塊編譯成.ko并
    發表于 03-20 11:48

    飛凌嵌入式ElfBoard ELF 1板卡-內核空間與用戶空間的數據拷貝之數據拷貝介紹

    在Linux系統,內核空間和用戶空間是兩個獨立的地址空間,它們有不同的訪問權限和內存保護機制。在內核空間和用戶空間之間進行數據傳輸時,需要進行數據拷貝操作。Linux內核提供了幾種方法來實現內核
    發表于 03-19 08:55

    四頻拷貝遙控器走俏海外

    常有同事反饋和客戶溝通時,需要了解客戶的遙控器頻率才能推薦合適的拷貝遙控器,這就需要客戶拆開遙控器查看才能確定,而有些扣位結合的原裝遙控器,強行拆開會導致遙控器損壞,對于客戶來講就是得不償失的事了
    的頭像 發表于 02-08 15:34 ?329次閱讀
    四頻<b class='flag-5'>拷貝</b>遙控器走俏海外

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

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

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

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

    Python多線程和多進程的區別

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

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

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

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

    scp是secure copy的簡寫,用于在Linux下進行遠程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨服務器,而且scp傳輸是加密的??赡軙晕⒂绊懸幌滤俣?。當你
    的頭像 發表于 09-29 15:54 ?674次閱讀

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

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

    Python在AI的應用實例

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

    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
    主站蜘蛛池模板: 视频一区二区在线观看 | 免费国产综合视频在线看 | 国产经典三级 | 性性性性bbbbxxxx | 深夜视频在线免费 | 精品一精品国产一级毛片 | 黄色一级视频欧美 | 美国bj69| 亚洲色图综合图区 | 日本色片视频 | 色在线免费| 一级骚片超级骚在线观看 | 国产一级一级片 | 狠狠干激情 | 永久毛片| 国产女人和拘做受视频免费 | 色噜噜噜噜噜在线观看网站 | 91免费视 | 欧美色欧美亚洲高清在线视频 | 开心色99×xxxx | 免费精品美女久久久久久久久 | 亚洲在成人网在线看 | 人人干人人干 | 免费大片av手机看片 | 特级生活片 | 国产精品一区在线观看你懂的 | se97se成人亚洲网站 | 欧美性黄色 | 国产亚洲精品久久久久久久软件 | 黄h视频在线观看视频 | 国产午夜视频在永久在线观看 | 午夜老湿影院 | 在线看逼| 亚洲精品成人a | 色多多视频成人影院 | 免费看 s色| 狠狠操夜夜爱 | 视频一区二区免费 | 波多久久夜色精品国产 | 一区二区三区精品国产欧美 | 色www视频永久免费 色www视频永久免费软件 |