在深层写入相同的嵌套循环n级

时间:2015-05-16 01:02:34

标签: python for-loop recursion

如果我有3个列表 - ' a',' b'和' c',我想找到包含一个值的所有可能组合从每个循环中,这很容易。

a = [1,2,3]
b = [4,5,6]
c = [7,8,9]

def combo_finder(a,b,c):
    result = []
    for x in a:
        for y in b:
            for z in c:
                result.append([x,y,z])
    return result

或者写它以便它可以采用一个参数,如下所示:

l = [a,b,c]
def combo_finder(l):
    result = []
    for x in l[0]:
        for y in l[1]:
            for z in l[2]:
                result.append([x,y,z])
    return result

但是说我需要它来容纳一个包含n个列表的参数l?如何根据需要创建嵌套for循环?我尝试过递归写法,但我似乎一直在以无限的方式陷入困境。

1 个答案:

答案 0 :(得分:2)

我不确定为什么Reut删除了有效答案 - 所以我重新发布我的版本(使用itertools.product):

std::string machid = GetMachineID();
const char *cstr = machid.c_str();

<强>输出

import itertools
a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
l = [a,b,c]
print [x for x in itertools.product(*l)]