python切片中內(nèi)存的注意事項(xiàng)總結(jié)
1、由于 Python 列表的切片會(huì)在內(nèi)存中創(chuàng)建新對(duì)象,因此需要注意的另一個(gè)重要函數(shù)是itertools.islice。
2、通常需要遍歷切片,而不僅僅是在內(nèi)存中靜態(tài)創(chuàng)建它。islice非常適合這個(gè)。
一個(gè)警告,它不支持負(fù)的參數(shù)start,stop或者step,如果這是一個(gè)問(wèn)題,您可能需要計(jì)算指標(biāo)或反向迭代提前。
length = 100 last_nine_iter = itertools.islice(list(range(length)), length-9, None, 1) list_last_nine = list(last_nine_iter)
現(xiàn)在:
>>> list_last_nine [91, 92, 93, 94, 95, 96, 97, 98, 99]
列表切片制作副本的事實(shí)是列表本身的一個(gè)特征。如果您對(duì) Pandas DataFrame 等高級(jí)對(duì)象進(jìn)行切片,它可能會(huì)返回原始視圖,而不是副本。
內(nèi)容擴(kuò)展:
語(yǔ)法:
nuList[start:end:direction]
start -->起始下標(biāo)(direction = 1時(shí),默認(rèn)是0;direction = -1時(shí)默認(rèn)是-1)
start -->結(jié)束下標(biāo)(direction = 1時(shí),默認(rèn)是len(nuList)-1;direction = -1時(shí)默認(rèn)是-(len(nuList)-1))
direction --> 默認(rèn)是1,切片方向從左往右;-1時(shí),切片方向從右往左
1.只包含左邊的端數(shù)據(jù),不包含右邊的端數(shù)據(jù)
print(nuList[1:3])
結(jié)果是:[1,2]
2.按照不同的方向返回元素
print(nuList[::])
結(jié)果是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nuList[::-1])
結(jié)果是:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
3.嚴(yán)格按照方向順序截取
print(nuList[3:1]) #從左往右,下標(biāo)3開始切,但是無(wú)法找到下標(biāo)1
print(nuList[-1:-3]) #從左往右,下標(biāo)-1開始切,但是無(wú)法找到下標(biāo)-3
print(nuList[-3:-1:-1]) #從右往左,下標(biāo)-3開始切,但是無(wú)法找到下標(biāo)-1
結(jié)果都為:[]
print(nuList[1:-1]) #從左往右,下標(biāo)1開始切,能找到-1下標(biāo)
結(jié)果:[1, 2, 3, 4, 5, 6, 7, 8]
print(nuList[-1:1:-1]) #從右往左,下標(biāo)-1開始切,能找到1下標(biāo)
結(jié)果:[9, 8, 7, 6, 5, 4, 3, 2]
到此這篇關(guān)于python切片中內(nèi)存的注意事項(xiàng)總結(jié)的文章就介紹到這了,更多相關(guān)python切片中內(nèi)存的注意事項(xiàng)內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。