动态创建嵌套的for循环

时间:2019-05-03 01:06:19

标签: python

我正在创建一个程序,以按字典顺序生成数字列表,并且需要根据输入中元素的数量嵌套循环。我想根据输入中元素的数量动态分配/创建嵌套的for循环。

def bounded_lists(upper_bounds):            
    res = []
    for i in range(0,max(upper_bounds) + 1):
        for j in range(0,max(upper_bounds) + 1):
            for k in range(0,max(upper_bounds) + 1):
                if i<=upper_bounds[0] and j<=upper_bounds[1] and k<=upper_bounds[2]:
                    res.append([i,j,k])
    return res

这段代码为我提供了正确的结果,如果我知道输入中的元素数为3,那么该代码就很简单。

1 个答案:

答案 0 :(得分:0)

您正在寻找itertools.product

一个实际的例子可能是

from itertools import product

def bounded_lists(inlists):
    return list(product(*inlists))

arr = [[1, 2], [3, 4, 5], [6]]
print(bounded_lists(arr))
# This prints
# [(1, 3, 6), (1, 4, 6), (1, 5, 6), (2, 3, 6), (2, 4, 6), (2, 5, 6)]
# This is in lexicographical order according to the orders of the lists in arr.