【发布时间】:2021-09-18 10:17:28
【问题描述】:
我在这里做错了什么。尝试使用 islice 获取生成器的块,但似乎无限运行。
from itertools import islice
size = 2
def g():
for x in range(11):
print("generating: ", x)
yield x
while True:
chunk = islice(g(), size)
if not chunk:
break
print("at chunk")
for c in chunk:
print(c)
我得到一个输出,它似乎只是永远循环并且似乎没有增加:
at chunk
generating: 0
0
generating: 1
1
at chunk
generating: 0
0
generating: 1
1
at chunk
generating: 0
0
generating: 1
1
at chunk
【问题讨论】:
-
你在 while 循环的每次迭代中创建一个新的生成器(从 0 开始)...
-
所有
islice实例都是真实的。如果不实际迭代它,你无法知道它会产生多少项目。 -
你想在这里实现什么?那你得到了什么?
-
与
itertools文档中的grouper配方进行比较,该配方使用对同一底层迭代器的多个引用来获取顺序块。
标签: python generator itertools