python迭代-如何对迭代器做切片操作
生活随笔
收集整理的這篇文章主要介紹了
python迭代-如何对迭代器做切片操作
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
如何對(duì)迭代器做切片操作
問(wèn)題舉例
讀取某個(gè)文件內(nèi)容的100~300行內(nèi)容,我們是否可以使用
類似列表切片的方式得到一個(gè)100~300行文件內(nèi)容的生成器
?
分析
列表的切片操作其實(shí)是在重載方法__getItem__方法
可以通過(guò)file.readlines()后再做切片,內(nèi)存會(huì)加載整個(gè)文件到內(nèi)存,如果文件太大,會(huì)浪費(fèi)內(nèi)存空間
?
解決思路
使用itertools.isslice,它能返回一個(gè)迭代器對(duì)象切片的生成器
?
代碼
from itertools import islice f = open('test.txt') for line in islice(f, 100-1, 300):print(line)前面100行也要讀進(jìn)來(lái)
?
自己實(shí)現(xiàn)一個(gè)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)))?
轉(zhuǎn)載于:https://www.cnblogs.com/marton/p/10772174.html
總結(jié)
以上是生活随笔為你收集整理的python迭代-如何对迭代器做切片操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html 随机 小游戏代码,html小游
- 下一篇: Python_迭代器和生成器的复习_38