我试图在保持数字顺序的同时生成数字列表的所有n项组合。因此,例如,如果该列表是获取列表python的所有已排序组合
[1,2,3,4]
长度3的有序组合将是:
[1,2,3]
[2,3,4]
[1,2,4]
[1,3,4]
为了清楚起见,我要保持的数字顺序,所以[1,4,2]不会是一个理想的结果。
有没有这样做的函数,或者一个快速的算法可以完成它?实际列表是111,我将选择100个项目。谢谢。
我试图在保持数字顺序的同时生成数字列表的所有n项组合。因此,例如,如果该列表是获取列表python的所有已排序组合
[1,2,3,4]
长度3的有序组合将是:
[1,2,3]
[2,3,4]
[1,2,4]
[1,3,4]
为了清楚起见,我要保持的数字顺序,所以[1,4,2]不会是一个理想的结果。
有没有这样做的函数,或者一个快速的算法可以完成它?实际列表是111,我将选择100个项目。谢谢。
你只是在寻找长度为n的给定列表的所有组合?如果是这样,你可以使用itertools的组合。无论哪种方式,你可能会想与itertools。
from itertools import combinations
numbers = [1,2,3,4]
for item in combinations(numbers, 3):
print sorted(item)
我不确定他是否想要排列或组合?如果事实证明OP想组合,我会删除我的帖子。 – user590028 2014-09-03 18:11:37
@ user590028是的,我最初认为是排列,但是当我看到预期的输出时,它指向组合。不过,我认为他想要的是组合,同时保留它们出现在列表中的顺序。例如,你可以有[1,3,4]但不是[3,1,4]。 – 2014-09-03 18:13:29
顶针是正确的。我想要组合,同时保持顺序,这就是为什么itertools中的纯组合或排列函数都不能满足需要。 – TomR 2014-09-03 18:23:04
您使用了单词组合,但是您描述了排列(排列保留顺序)。你能澄清吗? – user590028 2014-09-03 18:12:51
排列意味着订单很重要,但它不保留数字顺序,所以它也会从上面的列表中产生[2,4,1],这不是我所需要的。 – TomR 2014-09-03 18:24:19