如果我有 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 循环?我尝试过递归地编写,但我似乎总是遇到无限递归。
最佳答案
我不确定为什么 Reut 删除了有效答案 - 所以我将我的版本重新发布到其中(使用 itertools.product ):
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)]
输出
[(1, 4, 7), (1, 4, 8), (1, 4, 9), (1, 5, 7), (1, 5, 8), (1, 5, 9), (1, 6, 7), (1, 6, 8), (1, 6, 9), (2, 4, 7), (2, 4, 8), (2, 4, 9), (2, 5, 7), (2, 5, 8), (2, 5, 9), (2, 6, 7), (2, 6, 8), (2, 6, 9), (3, 4, 7), (3, 4, 8), (3, 4, 9), (3, 5, 7), (3, 5, 8), (3, 5, 9), (3, 6, 7), (3, 6, 8), (3, 6, 9)]
关于python - 编写相同的 n 层嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30270755/