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切片中內存的注意事項內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python數據分析之DataFrame內存優化
- 用python監控服務器的cpu,磁盤空間,內存,超過郵件報警
- 總結python 三種常見的內存泄漏場景
- Python numpy大矩陣運算內存不足如何解決
- Python內存泄漏和內存溢出的解決方案
- Python中的內存管理之python list內存使用詳解