python迭代-如何对迭代器做切片操作
生活随笔
收集整理的這篇文章主要介紹了
python迭代-如何对迭代器做切片操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如何對迭代器做切片操作
問題舉例
讀取某個文件內容的100~300行內容,我們是否可以使用
類似列表切片的方式得到一個100~300行文件內容的生成器
?
分析
列表的切片操作其實是在重載方法__getItem__方法
可以通過file.readlines()后再做切片,內存會加載整個文件到內存,如果文件太大,會浪費內存空間
?
解決思路
使用itertools.isslice,它能返回一個迭代器對象切片的生成器
?
代碼
from itertools import islice f = open('test.txt') for line in islice(f, 100-1, 300):print(line)前面100行也要讀進來
?
自己實現一個islice
from itertools import islice def my_islice(iterable, start, end, step=1):tmp = 0for i, x in enumerate(iterable):if i >= end:breakif i >= start:if tmp == 0:tmp = stepyield xtmp -= 1print(list(my_islice(range(100, 150), 10, 20, 3))) print(list(islice(range(100, 150), 10, 20, 3)))?
轉載于:https://www.cnblogs.com/marton/p/10772174.html
總結
以上是生活随笔為你收集整理的python迭代-如何对迭代器做切片操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html 随机 小游戏代码,html小游
- 下一篇: EUREKA原理总结