如果我有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循环?我尝试过递归写法,但我似乎一直在以无限的方式陷入困境。
答案 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)]