获取列表python的所有有序组合

Tom*_*omR 4 python combinations python-itertools

我正在尝试生成数字列表的所有n项组合,同时保持数字顺序.例如,如果列表是

[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

长度为3的有序组合将是:

[1,2,3]
[2,3,4]
[1,2,4]
[1,3,4]
Run Code Online (Sandbox Code Playgroud)

需要说明的是,我必须保持数字顺序,因此[1,4,2]不会是理想的结果.

是否有一个功能可以做到这一点,还是一个快速算法可以完成它?实际列表是111,我将选择100项.谢谢.

小智 6

您是否只是寻找给定长度n列表的所有组合?如果是这样,你可以使用itertools的组合.无论哪种方式,你都可能想要使用itertools.

from itertools import combinations

numbers = [1,2,3,4]
for item in combinations(numbers, 3):
    print sorted(item)
Run Code Online (Sandbox Code Playgroud)

  • @ user590028是的,我最初想的是排列,但是当我看到预期的输出时,它指向了组合.但是我认为他想要的是组合,同时保留它们出现在列表中的顺序.例如,您可以[1,3,4]而不是[3,1,4]. (4认同)
  • 顶针是正确的。我想在保留顺序的同时进行组合,这就是为什么itertools的纯组合或置换函数都无法满足我的需求的原因。 (2认同)