列出所有组合(Python)

时间:2013-11-08 21:38:34

标签: python combinations combinatorics itertools

我正在尝试输出具有某些约束的列表的所有组合:

我需要将长度x与域1的所有组合打印到y。

例如,设x = 3,域y = 4。我需要生成1到4个所有可能的组合,其中包含3个成员,没有重复:

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

我知道这应该是你选择x但很难弄清楚如何循环找到所有的组合。

使用itertools我知道如何生成给定列表的长度x的所有组合:

import itertools
print list(itertools.combinations([1,2,3],2))

但我对如何生成某个域的所有组合感到迷茫。

1 个答案:

答案 0 :(得分:3)

要创建从1到y的列表,请使用range(1, y+1)。有了这些知识,掌握您当前的itertools知识并将其应用于问题应该非常简单:

import itertools
print list(itertools.combinations(range(1, y+1), x))

要将每个结果作为列表而不是元组,您可以使用列表解析:

print [list(x) for x in itertools.combinations(range(1, y+1), x)]

或使用map()的替代方案:

print map(list, itertools.combinations(range(1, y+1), x))