如何在python中获得长度n的所有组合

2024-05-29 05:26:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有任何方法可以从一个数字列表中获得长度的所有组合。

例如,如果我的列表是[1, 2, 3, 4],并且我想输出(如果我选择n=3)

[1, 2, 3]
[1, 2, 4]
[1, 3, 4]
[2, 3, 4]

像[2,1,3]这样的其他排列对我没有用处。


Tags: 方法列表数字用处
2条回答

添加递归函数:

def combinations(array, tuple_length, prev_array=[]):
    if len(prev_array) == tuple_length:
        return [prev_array]
    combs = []
    for i, val in enumerate(array):
        prev_array_extended = prev_array.copy()
        prev_array_extended.append(val)
        combs += combinations(array[i+1:], tuple_length, prev_array_extended)
    return combs

combinations([1, 2, 3, 4], 3)

输出:

[[1, 2, 3], 
[1, 2, 4], 
[1, 3, 4], 
[2, 3, 4]]

itertools可以做到这一点

import itertools
for comb in itertools.combinations([1, 2, 3, 4], 3):
    print comb

输出

(1, 2, 3)
(1, 2, 4)
(1, 3, 4)
(2, 3, 4)

相关问题 更多 >

    热门问题