我想循环一个迭代器的"切片".我不确定这是否可行,因为我知道切片迭代器是不可能的.我想做的是:
def f():
for i in range(100):
yield(i)
x = f()
for i in x[95:]:
print(i)
Run Code Online (Sandbox Code Playgroud)
这当然失败了:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-37-15f166d16ed2> in <module>()
4 x = f()
5
----> 6 for i in x[95:]:
7 print(i)
TypeError: 'generator' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
是否有一种pythonic方式来循环生成器的"切片"?
基本上我实际关注的生成器读取一个非常大的文件并逐行执行一些操作.我想测试文件的切片以确保事情按预期执行,但让它在整个文件上运行是非常耗时的.
编辑:
如上所述,我需要在一个文件上.我希望有一种方法可以使用生成器显式指定这个例子:
import skbio
f = 'seqs.fna'
seqs = skbio.io.read(f, format='fasta')
Run Code Online (Sandbox Code Playgroud)
seqs是一个生成器对象
for seq in itertools.islice(seqs, 30516420, 30516432):
#do a bunch of stuff here
pass
Run Code Online (Sandbox Code Playgroud)
上面的代码做了我需要的,但是仍然非常慢,因为生成器仍然遍历所有行.我希望只遍历指定的切片