python切片中內存的註意事項總結

1、由於 Python 列表的切片會在內存中創建新對象,因此需要註意的另一個重要函數是itertools.islice。

2、通常需要遍歷切片,而不僅僅是在內存中靜態創建它。islice非常適合這個。

一個警告,它不支持負的參數start,stop或者step,如果這是一個問題,您可能需要計算指標或反向迭代提前。

length = 100
last_nine_iter = itertools.islice(list(range(length)), length-9, None, 1)
list_last_nine = list(last_nine_iter)

現在:

>>> list_last_nine
[91, 92, 93, 94, 95, 96, 97, 98, 99]

列表切片制作副本的事實是列表本身的一個特征。如果您對 Pandas DataFrame 等高級對象進行切片,它可能會返回原始視圖,而不是副本。

內容擴展:

語法:

nuList[start:end:direction]
start –>起始下標(direction = 1時,默認是0;direction = -1時默認是-1)
start –>結束下標(direction = 1時,默認是len(nuList)-1;direction = -1時默認是-(len(nuList)-1))
direction –> 默認是1,切片方向從左往右;-1時,切片方向從右往左

1.隻包含左邊的端數據,不包含右邊的端數據

print(nuList[1:3])

結果是:[1,2]

2.按照不同的方向返回元素

print(nuList[::])

結果是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(nuList[::-1])

結果是:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

3.嚴格按照方向順序截取

print(nuList[3:1]) #從左往右,下標3開始切,但是無法找到下標1

print(nuList[-1:-3]) #從左往右,下標-1開始切,但是無法找到下標-3

print(nuList[-3:-1:-1]) #從右往左,下標-3開始切,但是無法找到下標-1

結果都為:[]

print(nuList[1:-1]) #從左往右,下標1開始切,能找到-1下標

結果:[1, 2, 3, 4, 5, 6, 7, 8]

print(nuList[-1:1:-1]) #從右往左,下標-1開始切,能找到1下標

結果:[9, 8, 7, 6, 5, 4, 3, 2]

到此這篇關於python切片中內存的註意事項總結的文章就介紹到這瞭,更多相關python切片中內存的註意事項內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: