我正在创建一个程序,以按字典顺序生成数字列表,并且需要根据输入中元素的数量嵌套循环。我想根据输入中元素的数量动态分配/创建嵌套的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,那么该代码就很简单。
答案 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.