如何组合nCr从x到y(nCx -nCy)

时间:2016-08-01 21:45:05

标签: python list combinations itertools

我想在列表中对所有160个元素进行一些组合,但我不想进行所有可能的组合,或者它永远不会结束。我只想要一些,比方说1,2,3,4。

而不是一个接一个地做:

combination = itertools.combinations(lst, 1)
combination = itertools.combinations(lst, 2)
combination = itertools.combinations(lst, 3)
combination = itertools.combinations(lst, 4)

我怎么能做所有4 ???

2 个答案:

答案 0 :(得分:0)

这个简单的for循环怎么样:

comb = []
for i in range (1,5): # (start, end + 1)
    comb[i] = itertools.combinations(lst, i)

答案 1 :(得分:0)

您可以创建包含itertools.chain.from_iterable所有组合的单个迭代器:

combination = chain.from_iterable(combinations(lst, i) for i in range(1,5))

输入较短的示例:

>>> list(chain.from_iterable(combinations(range(3), i) for i in range(1,3)))
[(0,), (1,), (2,), (0, 1), (0, 2), (1, 2)]