婷婷射_狼人狠狠干_伊人久久婷婷五月综合97色_国产在线观看免费麻豆_欧美性成人_美女网站免费福利视频_aa视频在线观看_国产第一区第二区

歡迎訪問尚賢官網(wǎng),我們提供網(wǎng)站建設(shè)與推廣服務(wù)!
全國(guó)熱線:18537972228
您當(dāng)前位置: 技術(shù)開發(fā) - PYTHON關(guān)于深淺拷貝

PYTHON關(guān)于深淺拷貝

時(shí)間:2022-10-23 14:23:24 來源:洛陽尚賢科技

淺拷貝:只能*層互不影響,第二層就會(huì)互相影響(共用)

直接賦值的話,*層和第二層都是互相影響的。

1、切片就是淺拷貝。也就是復(fù)制一層。list02 = list01[:] 

優(yōu)點(diǎn):結(jié)省內(nèi)存
缺點(diǎn):當(dāng)深層數(shù)據(jù)被修改時(shí),互相影響

注意:拷貝時(shí)應(yīng)優(yōu)先選擇淺拷貝。因?yàn)橐粚拥牧斜聿恍枰羁截悾?即使多層列表,那它的內(nèi)表通常是不變的,所以也用不到深拷貝。何必浪費(fèi)內(nèi)存。

舉例說明:

list01 = [10, [20, 30]]   #這里面有兩層,即兩個(gè)表
list02 = list01[:]   #切片復(fù)制會(huì)復(fù)制一層得到新的列表地址(所以就2份了),復(fù)制后得到的是10的列表地址,和[20, 30] 的上一級(jí)列表地址,也就是說并沒有得到[20, 30]本身的列表地址??偨Y(jié):淺拷貝,*層數(shù)據(jù)兩份,深層數(shù)據(jù)一份。

list02[0] = 100 # 因此,這里的修改是在新的列表地址上做的修改,兩分互不影響,故不影響原表。

list02[1][1] = 300  #但是這里的第二個(gè)[1]對(duì)應(yīng)的是原表中的內(nèi)表,這個(gè)內(nèi)表[20, 30] 的列表地址沒有被list02 拷貝走。因此,它還是一份,根據(jù)一份互相影響的原則,這里的改動(dòng)一定影響原表。

print(list02)  # [100, [20, 300]]  可以看到list02的 *個(gè)數(shù)被改,但原表的*個(gè)數(shù)沒改。
print(list01)  #[10, [20, 300]]   不過原表的內(nèi)表第二個(gè)數(shù)被改了。證明以上邏輯正確。這就是淺拷貝。



深拷貝:是為了所有都互不影響

全部賦值就是深拷貝,也就是復(fù)制所有層。


list02 = copy.deepcopy(list01)

優(yōu)點(diǎn):*互不影響
缺點(diǎn):占內(nèi)存較多

如果有兩層,那深拷貝復(fù)制所有數(shù)據(jù)兩份。所有數(shù)據(jù)是指:列表地址、上一級(jí)列表地址、數(shù)據(jù)地址等一切。

import copy    # 這就是準(zhǔn)備深拷貝工具
list01 = [10, [20, 30]]
list02 = copy.deepcopy(list01) 
list02[0] = 100
list02[1][1] = 300
print(list02)  # [100, [20, 300]] 
print(list01)  # [10, [20, 30]]   #看,深拷貝做到了兩個(gè)表*的互不影響!

我們提供整套的互聯(lián)網(wǎng)整合營(yíng)銷托管服務(wù),深度研究SEO技術(shù)在網(wǎng)絡(luò)營(yíng)銷中的創(chuàng)新和運(yùn)用,為內(nèi)貿(mào)與外貿(mào)企業(yè)
量身定制高轉(zhuǎn)化率的網(wǎng)站設(shè)計(jì)開發(fā)與SEO營(yíng)銷解決方案。
了解更多
將本站安裝到主屏幕,使用更順暢