将整数组合转换为这些组合的总和列表

时间:2017-10-08 22:21:07

标签: python algorithm

我需要这样做:我有整数列表,我制作包含这些数字中的3个的所有可能组合,输出是包含这些组合的总和的列表。 (不是所有组合的总和,而是每个组合一个总和)

我的算法以这种方式完成:制作所有可能组合的列表,然后计算每个组合的总和并将其保存到列表中,如果整数的数量很大,则无效。这是python中的小样本:

ListA

你能想出一些更有效的解决方案吗?也许如果有一种方法可以使它成为一个循环,其中最初没有组合列表并且在第二个时计算每个组合的总和,而是直接计算刚刚创建的组合的总和,将其保存到列表中然后继续另一个,直到完成所有组合和总和。

1 个答案:

答案 0 :(得分:0)

sum()适用于任何可迭代的,而不仅仅是列表。您可以通过将代码直接应用于组合的元组来提高代码效率:

result = [sum(c) for c in itertools.combinations(array, 3)]

如果你想懒惰地处理结果,你也可以使用生成器表达式:

result = (sum(c) for c in itertools.combinations(array, 3))