有没有办法可以控制python生成器对象的迭代范围?
示例:假设一个生成器包含2000个项目,我希望一个循环从1到100迭代,另一个循环从101到200,依此类推。
简单的for item in generator
循环只会耗尽生成器
答案 0 :(得分:2)
itertools.islice(generator, start, stop, step)
是你想要使用的。
例如:
def generator():
n = 1
while n:
yield n
n += 1
items = generator()
for item in itertools.islice(items, 100):
print ('first', item)
for item in itertools.islice(items, 100):
print ('second', item)
编辑:上面当然只允许你每次拿100。如果你知道你的生成器是有限的,我会把它变成一个列表,然后迭代它的范围。然后你可以有任意和重叠的范围。