我正在尝试输出具有某些约束的列表的所有组合:
我需要将长度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))
但我对如何生成某个域的所有组合感到迷茫。
答案 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))