python详尽的组合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python详尽的组合相关的知识,希望对你有一定的参考价值。

我正在尝试写一个函数有输入:

given_num=6, n=3

如何将所有可能组合的结果作为列表返回,其中n个元素和sum = given_num嵌套在列表中:

[[0,0,6],[0,1,5],[0,2,4],[0,3,3],[0,4,2],[0,5,1],[0,6,0],
[1,0,5],[1,1,4],[1,2,3],[1,3,2],[1, 4,1],[1,5,0],
...
[6,0,0]]

求解,可能的组合计算为

factorial(given_num+n-1)/(factorial(given_num) * factorial(n-1))

答案

在这里尝试使用itertools product

from itertools import product

given_num = 6
n = 3
all_comb = product(range(given_num+1), repeat=n)
final_lst = [i for i in all_comb if sum(i) == given_num]
print(final_lst)
另一答案
from itertools import product
import numpy as np

tuples = []
given_num = 6
n = 3

for numbers in product(np.arange(given_num+1), repeat=n):

    if sum(numbers) == given_num:
        tuples.append(numbers)

print(tuples)
另一答案

如果你想通过递归函数获得一些乐趣

def summands(num, N):
    if N==1:
        return [[num]]
    else:
        return [[i] + j for i in range(num+1) for j in summands(num - i, N-1)]

以上是关于python详尽的组合的主要内容,如果未能解决你的问题,请参考以下文章

iOS 多线程:『GCD』详尽总结

JavaScript 代码片段

python time datetime模块最详尽讲解

48个值得掌握的JavaScript代码片段(上)

如何组合绑定片段而不将它们包装在 XML 文字中

寻找详尽的命令列表和设置样式的方法