【问题标题】:python exhaustive combinationpython穷举组合
【发布时间】:2018-06-08 08:58:45
【问题描述】:

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

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))

【问题讨论】:

标签: python iterator combinations


【解决方案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)

【讨论】:

    【解决方案2】:
    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)
    

    【讨论】:

      【解决方案3】:

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

      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)]
      

      【讨论】:

        猜你喜欢
        • 2018-02-14
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 2020-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-20
        相关资源
        最近更新 更多