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

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡(jiǎn)述Python中深淺拷貝(copy)

馬哥Linux運(yùn)維 ? 來(lái)源:CSDN ? 作者:南枝向暖北枝寒 ? 2021-07-29 16:55 ? 次閱讀

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

一、深淺copy

賦值運(yùn)算

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是一個(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è)元素改為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]]

小結(jié):

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

深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對(duì)深copy做了一個(gè)優(yōu)化,將可變的數(shù)據(jù)類型在內(nèi)存中重新創(chuàng)建一份,而不可變的數(shù)據(jù)類型則沿用之前的,所以內(nèi)存中是下面這樣的:

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

小結(jié):

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

為什么Python默認(rèn)的拷貝方式是淺拷貝?

時(shí)間角度:淺拷貝花費(fèi)時(shí)間更少。

空間角度:淺拷貝花費(fèi)內(nèi)存更少。

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

總結(jié):

不可變對(duì)象在賦值時(shí)會(huì)開辟新空間。

可變對(duì)象在賦值時(shí),修改一個(gè)的值,另一個(gè)也會(huì)發(fā)生改變。

深、淺拷貝對(duì)不可變對(duì)象拷貝時(shí),不開辟新空間,相當(dāng)于賦值操作。

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

深拷貝在拷貝時(shí),會(huì)逐層進(jìn)行拷貝,直到所有的引用都是不可變對(duì)象為止。

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

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

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

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

文章轉(zhuǎn)載:CSDN

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

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4825

    瀏覽量

    86268

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

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用串口dma環(huán)形接收+空閑中斷,觸發(fā)空閑中斷后進(jìn)入任務(wù)拷貝數(shù)據(jù)發(fā)現(xiàn)拷貝的數(shù)據(jù)全為0,怎么處理?

    求助,我使用串口dma環(huán)形接收+空閑中斷,默認(rèn)應(yīng)該開了緩存,在觸發(fā)空閑中斷后進(jìn)入任務(wù)拷貝數(shù)據(jù)發(fā)現(xiàn)拷貝的數(shù)據(jù)全為0,但是我掛上調(diào)試之后在拷貝之前只要打上斷點(diǎn)斷一次執(zhí)行之后再執(zhí)行就正常了
    發(fā)表于 03-27 06:17

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核空間與用戶空間的數(shù)據(jù)拷貝之獲取內(nèi)核空間數(shù)據(jù)

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

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核空間與用戶空間的數(shù)據(jù)拷貝之?dāng)?shù)據(jù)拷貝介紹

    空間之間進(jìn)行數(shù)據(jù)傳輸時(shí),需要進(jìn)行數(shù)據(jù)拷貝操作。Linux內(nèi)核提供了幾種方法來(lái)實(shí)現(xiàn)內(nèi)核空間與用戶空間之間的數(shù)據(jù)拷貝copy_to_user()和copy_from_user()這兩個(gè)函
    發(fā)表于 03-20 11:50

    飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核空間與用戶空間的數(shù)據(jù)拷貝之獲取內(nèi)核空間數(shù)據(jù)

    /environment-setup-cortexa7hf-neon-poky-linux-gnueabi elf@ubuntu:~/work/test/03_內(nèi)核空間與用戶空間的數(shù)據(jù)拷貝/copy_to_user$ make將驅(qū)動(dòng)模塊編譯成.ko并
    發(fā)表于 03-20 11:48

    飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核空間與用戶空間的數(shù)據(jù)拷貝之?dāng)?shù)據(jù)拷貝介紹

    在Linux系統(tǒng),內(nèi)核空間和用戶空間是兩個(gè)獨(dú)立的地址空間,它們有不同的訪問權(quán)限和內(nèi)存保護(hù)機(jī)制。在內(nèi)核空間和用戶空間之間進(jìn)行數(shù)據(jù)傳輸時(shí),需要進(jìn)行數(shù)據(jù)拷貝操作。Linux內(nèi)核提供了幾種方法來(lái)實(shí)現(xiàn)內(nèi)核
    發(fā)表于 03-19 08:55

    四頻拷貝遙控器走俏海外

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

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

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

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

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

    Python多線程和多進(jìn)程的區(qū)別

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

    磁盤拷貝機(jī)會(huì)拷貝刪除的內(nèi)容嗎

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

    如何使用SCP和Rsync遠(yuǎn)程拷貝文件

    scp是secure copy的簡(jiǎn)寫,用于在Linux下進(jìn)行遠(yuǎn)程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機(jī)進(jìn)行拷貝不能跨服務(wù)器,而且scp傳輸是加密的。可能會(huì)稍微影響一下速度。當(dāng)你
    的頭像 發(fā)表于 09-29 15:54 ?798次閱讀

    怎么導(dǎo)出python邊緣計(jì)算的APP?

    怎么導(dǎo)出python邊緣計(jì)算的APP,想進(jìn)行修改又找不到源碼
    發(fā)表于 07-25 06:13

    Python在AI的應(yīng)用實(shí)例

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

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

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

    esp32c3怎樣保護(hù)flash的代碼不被拷貝

    想知道這個(gè)c3怎樣保護(hù)flash的代碼不被拷貝。這個(gè)內(nèi)置flash的代碼有沒有可能被拷貝出來(lái),如果可以拷貝,應(yīng)該怎樣保護(hù)。 另一個(gè)問題
    發(fā)表于 06-19 06:32
    主站蜘蛛池模板: 华人永久免费视频 | 老司机51精品视频在线观看 | 国产午夜视频高清 | 色妞基地| 午夜刺激爽爽视频免费观看 | 亚洲29p| 亚洲欧美圣爱天天综合 | 成人在线视频网 | 夜夜操狠狠操 | 在线观看色视频 | 激情久久久久久久久久久 | tube性欧美另类 | 日本视频三区 | 一级毛片子 | 激情五月婷婷在线 | 中日韩毛片 | 夜夜网站| 久久精品人人爽人人爽快 | 99在线国产视频 | 中文字幕一区二区三区有限公司 | japanese色系国产在线高清 | 色播在线永久免费视频网站 | 欧美片欧美日韩国产综合片 | 黄色片网站大全 | 深爱五月婷婷 | 天堂成人网 | 天天搞天天色 | 亚洲婷婷综合色高清在线 | 一 级 黄 中国色 片 | 美国激情ap毛片 | 日本免费在线 | 天天天射 | 中文字幕在线观看第一页 | 国产黄色在线看 | 色宅男看片午夜大片免费看 | 国产香蕉久久精品综合网 | 高清午夜线观看免费 | 免费看h网站 | 日韩欧美中文在线 | 日本a级影院 | 国产98色在线 |