给定一定范围的数字,构造所有单个值,对,三元组等

时间:2019-04-04 11:24:08

标签: python arrays python-3.x list

我需要编写一个可以容纳用户总数的代码:

`N = 3` (for example)

据此,我需要创建一个列表列表,其中包含所有单元素列表,对,三元组(等等,但是在这种情况下,三元组是最大的)。

[ [1], [2], [3], [1,2], [1,3], [2,3], [1,2,3] ]

我现在拥有的代码:

from itertools import combinations

N = 3
comb_lst = []

for idx in range(1, N+1):
    comb = combinations([1, 2, 3], idx)
    for i in comb:
        comb_lst += [list(i)]

print(comb_lst)

问题是我认为这不会扩展到成千上万的用户,所以有没有更快的方法?

2 个答案:

答案 0 :(得分:2)

该方法正确有效。一些小改进:

result
Out[2]: [(1), (2), (3), (1, 2), (1, 3), (2, 3), (1, 2, 3)]

结果:

itertools.combinations_with_replacement()

如果要重复使用相同元素的对/三元组,请使用Employee

答案 1 :(得分:0)

最小复杂度是comb_lst的数量。此计数为2 ** N。您可以包含或不包含每个元素(一个元素有2个变体)。因此,对于接近1000的N来说,它是不缩放的