我需要这样做:我有整数列表,我制作包含这些数字中的3个的所有可能组合,输出是包含这些组合的总和的列表。 (不是所有组合的总和,而是每个组合一个总和)
我的算法以这种方式完成:制作所有可能组合的列表,然后计算每个组合的总和并将其保存到列表中,如果整数的数量很大,则无效。这是python中的小样本:
ListA
你能想出一些更有效的解决方案吗?也许如果有一种方法可以使它成为一个循环,其中最初没有组合列表并且在第二个时计算每个组合的总和,而是直接计算刚刚创建的组合的总和,将其保存到列表中然后继续另一个,直到完成所有组合和总和。
答案 0 :(得分:0)
sum()
适用于任何可迭代的,而不仅仅是列表。您可以通过将代码直接应用于组合的元组来提高代码效率:
result = [sum(c) for c in itertools.combinations(array, 3)]
如果你想懒惰地处理结果,你也可以使用生成器表达式:
result = (sum(c) for c in itertools.combinations(array, 3))