使用Python查找可以汇总数据集的唯一组合

时间:2018-12-04 11:20:36

标签: python combinatorics

我从某个地方有这个问题,作为练习到数据工程测试。

给出候选编号(C)和目标编号(T)的集合,在C中找到候选编号总和为T的所有唯一组合。

要求: C中的每个数字只能组合使用一次。 C和T始终是正整数

Example: find a target = 6 from a dataset of [3,5,6,1,2]. the solution is
- [3,1,2]
- [5,1]
- [6]

我只知道这是一个Apriori算法,但我不知道如何解决该问题。

1 个答案:

答案 0 :(得分:0)

使用itertools.combinations查找列表中每种可能大小的唯一组合。例如

from itertools import combinations

a = [3,5,6,1,2]
target = 6
result = []
for i in range(1,len(a)+1):
    combs = combinations(a, i)
    for c in combs:
        if sum(c) == target:
            result.append(list(c))
print(result) # Output [[6], [5, 1], [3, 1, 2]]