python中的一种组合算法

2024-04-19 07:46:41 发布

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

import copy

def combine(l, n):
    answers = []
    one = [0] * n
    def next_c(li = 0, ni = 0):
        if ni == n:
            answers.append(copy.copy(one))
            return
        for k in range(li, len(l)):
            one[ni] = l[k]
            next_c(k+1, ni+1)
    next_c()
    return answers

print(combine([1,2,3,4],2)) 

最近我在网上发现了这个代码。效果很好。但是,我不知道它是如何工作的,所以有人能告诉我它是如何工作的吗?如何快速理解递归代码?非常感谢


Tags: 代码inimportforreturnifdefli
1条回答
网友
1楼 · 发布于 2024-04-19 07:46:41

正如@AChampion所说,您还可以通过itertools库获得组合,这更容易理解:

import itertools

def combine2(lst, n):
    return [list(x) for x in itertools.combinations(lst, n)]

输出:

^{pr2}$

相关问题 更多 >