我想生成以下类型的列表。
输入2,5
输出
[1,1],[1,2]
[2,1],[2,2]
[3,1],[3,2]
[4,1],[4,2]
[5,1],[5,2]
即。让每个索引从1运行到它的上限我可以使用循环,如
for i in range(1,3)
for j in range (1,6)
....
但是当输入变为[1,2,3,4,5]...
E.g。
输入
[2,3,4]
输出
[1,1,1] [1,1,2] [1,1,3] [1,1,4]
[1,2,1] [1,2,2] [1,2,3] [1,2,4]
[1,3,1] [1,3,2] [1,3,3] [1,3,4]
[2,1,1] [2,1,2] [2,1,3] [2,1,4]
[2,2,1] [2,2,2] [2,2,3] [2,2,4]
[2,3,1] [2,3,2] [2,3,3] [2,3,4]
输入
[1,2,3]
输出
[1,1,1] [1,1,2] [1,1,3]
[1,2,1] [1,2,2] [1,2,3]
有没有优雅的方式呢? (最好是在python中)
答案 0 :(得分:0)
将它们全部转换为range
并使用itertools.product
。明星拆包可以很容易地做到:
allranges = (range(1, lim+1) for lim in inputs)
for prod in itertools.product(*allranges):
print(prod)