以下代码在 Python 3.6 中不会输出任何内容。
相反,它只是停在那里并烧掉CPU。问题似乎是如果
我本来期望它开始计数(到无限),就像这个生成器的行为一样(直接从文档中获取):
from itertools import product, count
for f in product(count(), [1,2]):
print(f)
相反,它只是停在那里并烧掉CPU。问题似乎是如果
product
超过一个无限空间,它不会返回迭代器,因为它首先评估完整的product
。这令人惊讶,因为product
应该是一个生成器。我本来期望它开始计数(到无限),就像这个生成器的行为一样(直接从文档中获取):
for tup in ((x,y) for x in count() for y in [1,2]):
print(tup)
但是,尽管我的生成器立即开始计数,使用 product
的生成器根本不会计数。
itertools
中的其他工具表现符合我的预期。例如,以下代码:
for f in takewhile(lambda x: True, count()):
print(f)
会打印一系列数字,因为takewhile
是惰性的。