按上限

时间:2015-10-29 03:09:01

标签: python list

我想生成以下类型的列表。

输入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中)

1 个答案:

答案 0 :(得分:0)

将它们全部转换为range并使用itertools.product。明星拆包可以很容易地做到:

allranges = (range(1, lim+1) for lim in inputs)
for prod in itertools.product(*allranges):
    print(prod)