【发布时间】:2017-05-04 19:22:26
【问题描述】:
我正在尝试创建一个函数,该函数将生成列表的所有排列,但仅限于 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]
我见过很多置换函数的变体,但没有一个有这种限制。
【问题讨论】:
-
自然组合不会重复,所以如果您有一个排序列表,
list(itertools.combinations(l, 3))应该可以正常工作吗? -
@ayhan 这应该是答案。或者
[list(x) for x in itertools.combinations(lst, 3)]创建子列表,而不是元组。 -
@ayhan 我们确定订单不会改变吗?
-
@AAron 你的意思是子列表的顺序?如果您不确定,您可以随时对结果进行排序
-
@ayhan 我不怪你回答重复,因为排序部分是新的,这是真的。既然您回答了,就将其作为重复项关闭是正确的做法:您的回答正是回答了这个问题,并且重复项可能提供了更多种类。
标签: python permutation