我想循环遍历迭代器的“切片”。我不确定这是否可能,因为我知道不可能对迭代器进行切片。我想做的是这样的:
def f():
for i in range(100):
yield(i)
x = f()
for i in x[95:]:
print(i)
这当然失败了:
---------------------------------------------------------------------------
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
有没有一种Python式的方法来循环生成器的“切片”?
基本上,我实际关心的生成器读取一个非常大的文件并逐行对其执行一些操作。我想测试文件的片段以确保事情按预期执行,但让它运行整个文件非常耗时。
Edit:
如前所述,我需要将其记录在文件中。我希望有一种方法可以使用生成器明确指定这一点,例如:
import skbio
f = 'seqs.fna'
seqs = skbio.io.read(f, format='fasta')
seqs 是一个生成器对象
for seq in itertools.islice(seqs, 30516420, 30516432):
#do a bunch of stuff here
pass
上面的代码满足了我的需要,但是仍然非常慢,因为生成器仍然循环遍历所有行。我希望只循环指定的切片