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!
推薦閱讀:
- Python編程itertools模塊處理可迭代集合相關函數
- Python函數式編程中itertools模塊詳解
- python內置函數之slice案例詳解
- Python中迭代器與生成器的用法
- 如何使用pandas對超大csv文件進行快速拆分詳解