我需要编写一个可以容纳用户总数的代码:
`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)
问题是我认为这不会扩展到成千上万的用户,所以有没有更快的方法?
答案 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来说,它是不缩放的