Python中怎么實(shí)現(xiàn)深淺拷貝

這篇文章將為大家詳細(xì)講解有關(guān)Python中怎么實(shí)現(xiàn)深淺拷貝,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識(shí)有一定的了解。

成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站制作、做網(wǎng)站與策劃設(shè)計(jì),長陽網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:長陽等地區(qū)。長陽做網(wǎng)站價(jià)格咨詢:13518219792

一、深淺copy

  1.  賦值運(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]

圖解:

Python中怎么實(shí)現(xiàn)深淺拷貝

注意:l2 = l1是一個(gè)指向,是賦值,和深淺copy無關(guān)。

  2.  淺copy

其實(shí)列表是一個(gè)一個(gè)的槽位,每個(gè)槽位存儲(chǔ)的是該對象的內(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

Python中怎么實(shí)現(xiàn)深淺拷貝

例2

Python中怎么實(shí)現(xiàn)深淺拷貝

例3

Python中怎么實(shí)現(xiàn)深淺拷貝

小結(jié):

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

  3.  深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中怎么實(shí)現(xiàn)深淺拷貝

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

Python中怎么實(shí)現(xiàn)深淺拷貝

關(guān)于Python中怎么實(shí)現(xiàn)深淺拷貝就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

新聞標(biāo)題:Python中怎么實(shí)現(xiàn)深淺拷貝
網(wǎng)頁URL:http://bm7419.com/article42/jjdhhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、App開發(fā)、Google、網(wǎng)站策劃、云服務(wù)器網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作