首页 > 解决方案 > 带有 itertools.product 的嵌套循环仅运行 1 次

问题描述

我这里有点问题。我正在尝试制作一个嵌套循环,但第二个循环只运行一次。

这是代码:

def solver(numbers, gleichung_list = [], temp = []):
    perm = itertools.permutations(numbers)
    permlist = [list(y) for y in perm]
    oper = itertools.product(['+', '-', '*', '/'], repeat=len(numbers)-1)
    for gleichung in permlist:
        print(gleichung)
        for ops in oper:
            print(ops)
            temp = [None] * (len(numbers)*2-1)
            temp[::2] = list(gleichung)
            temp[1::2] = list(ops)
            print(temp)
            print(ops)

    numbers = [1, 2]
    solver(numbers)

但是当我运行它时,这就是我得到的:

[1, 2]
('+',)
[1, '+', 2]
('+',)
('-',)
[1, '-', 2]
('-',)
('*',)
[1, '*', 2]
('*',)
('/',)
[1, '/', 2]
('/',)
[2, 1]

为什么第二个循环不运行?

标签: pythonitertools

解决方案


product()函数返回一个迭代器而不是一个列表,因此您的嵌套循环在此迭代器上运行一次,然后就没有更多的项目了。在您的第一个循环之前添加oper = list(oper)以纠正此问题。


推荐阅读