python中切片的淺拷貝探究
本文教程操作環(huán)境:windows7系統(tǒng)、Python3.9.1,DELLG3電腦。
1、淺拷貝說(shuō)明
淺拷貝,拷貝了最外圍的對(duì)象本身,內(nèi)部的元素都只是拷貝了一個(gè)引用而已。也就是,把對(duì)象復(fù)制一遍,但是該對(duì)象中引用的其他對(duì)象我不復(fù)制。
2、切片拷貝實(shí)例
切片操作的返回結(jié)果是一個(gè)新的獨(dú)立的序列。以列表為例,列表切片后得到的還是一個(gè)列表,占用新的內(nèi)存地址。
當(dāng)取出切片的結(jié)果時(shí),它是一個(gè)獨(dú)立對(duì)象,因此,可以將其用于賦值操作,也可以用于其它傳遞值的場(chǎng)景。但是,切片只是淺拷貝,它拷貝的是原列表中元素的引用,所以,當(dāng)存在變長(zhǎng)對(duì)象的元素時(shí),新列表將受制于原列表。
li=[1,2,3,4]
ls=li[::]
li==ls#True
id(li)==id(ls)#False
li.append(li[2:4])#[1,2,3,4,[3,4]]
ls.extend(ls[2:4])#[1,2,3,4,3,4]
#下例等價(jià)于判斷l(xiāng)i長(zhǎng)度是否大于8
if(li[8:]):
print("notempty")
else:
print("empty")
#切片列表受制于原列表
lo=[1,[1,1],2,3]
lp=lo[:2]#[1,[1,1]]
lo[1].append(1)#[1,[1,1,1],2,3]
lp#[1,[1,1,1]]
由于可見,將切片結(jié)果取出,它可以作為獨(dú)立對(duì)象使用,但是也要注意,是否取出了變長(zhǎng)對(duì)象的元素。
以上就是python中切片的淺拷貝探究,相信大家對(duì)切片的復(fù)制方式已經(jīng)有所明確。對(duì)于文章內(nèi)容有不了解的地方,可以先復(fù)習(xí)一下基本概念。更多Python學(xué)習(xí)教程請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。