首页 > 解决方案 > 为什么这个 itertools 函数在另一个函数之外工作而不在内部工作?

问题描述

我正在尝试在 Python 中使用 itertools 产品找到所有可能的组合。该代码有效,但是一旦我尝试产生我的结果而不是打印它们,它只会经历一个循环或重复,而忽略重复参数。

这有效:

for i in range(1, 4):
    g = itertools.product(range(5), repeat=i)
    for j in range(len(al) ** i):
        print(next(g))

这不会:

def func():
    for i in range(1, 4):
        g = itertools.product(range(5), repeat=i)
        for j in range(len(al) ** i):
            yield next(g)

for i in range(100):
    print(next(func()))

我尝试过使用下一个语句并将 itertools 函数放在不同的地方。谷歌不是很有帮助,因为所有结果都只是非常基本的 itertools 教程。

我怎样才能让它在一个函数中工作?

标签: pythonfunctionitertools

解决方案


我猜你想要这个?

f = func()
for i in range(100):
    print(next(f))

下次请提供一个 mre:https ://stackoverflow.com/help/minimal-reproducible-example


推荐阅读