python - 编写相同的 n 层嵌套循环

标签 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 循环?我尝试过递归地编写,但我似乎总是遇到无限递归。

最佳答案

我不确定为什么 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/

相关文章:

python - 当我使用 @observes 时, session 已经刷新

python - 在 while 循环中以 "trigger"的形式从列表中删除项目

javascript - Jquery 通过循环获取带 id 的整数值

java.lang.ArrayIndexOutOfBoundsException 循环?

javascript - Node.js 中的异步递归问题

javascript - 如何在自身内部渲染 React 组件

python - 使用 Django 24 小时后软删除

python - numpy数组中的np.nan是否占用内存?

java - ID生成方法陷入循环

javascript - JavaScript 中的尾递归优化