Python Permutations仅限于增加数字

时间:2017-05-04 19:22:26

标签: python permutation

我正在尝试创建一个函数,该函数将生成列表的所有排列,但仅限于len(n)的集合,并且仅从左到右增加。例如,如果我有列表l = [2,4,6,8,10]n = 3,则结果应为

[2,4,6],
[2,4,8],
[2,4,10],
[2,6,8],
[2,6,10],
[2,8,10],
[4,6,8],
[4,6,10],
[6,8,10]

我已经看到了排列函数的大量变化,但没有这种限制。

1 个答案:

答案 0 :(得分:6)

来自itertools docs

  

组合以字典排序顺序发出。因此,如果输入iterable已排序,则组合元组将按排序顺序生成。

因此,如果您有一个排序列表,那么使用itertools.combinations您将获得所需的结果。如果没有,您可以先致电sorted()

lst = range(2, 11, 2)

list(itertools.combinations(lst, 3))
Out: 
[(2, 4, 6),
 (2, 4, 8),
 (2, 4, 10),
 (2, 6, 8),
 (2, 6, 10),
 (2, 8, 10),
 (4, 6, 8),
 (4, 6, 10),
 (4, 8, 10),
 (6, 8, 10)]