【发布时间】:2017-04-27 15:50:35
【问题描述】:
我在 Python 中有一个庞大的整数列表(1000000+ 个元素),但为了简单起见,我将通过一个示例来说明我需要什么。假设我有这个列表:
A = [1,2,3,4,100]
现在我想获取该列表的所有组合(大小为 3),因此我使用了 itertools。
combinations = itertools.combinations(A,3)
但我的问题是这将按字典顺序返回组合:
(1,2,3)
(1,2,4)
(1,2,100)
(1,3,4)
等等。
我想获得按其元素总和排序的组合。那将是:
(1,2,3) 和 6, (1,2,4) 之和为 7, (1,3,4) 之和为 8,
以此类推。
我怎样才能做到这一点?
【问题讨论】:
-
我会给每个组合一个总和值并按该值作为键进行排序
[(1,2,3),6]- 沿着这些线 -
你估计有多少组合?
-
组合的数量会很大,因为列表中有超过一百万个元素
-
你有足够的内存来存储这么多组合吗?我的猜测是它需要大约 1.2e10 千兆字节
-
您似乎正在尝试对诸如背包问题之类的问题使用蛮力。如果您描述实际问题,可能有更好的方法来解决它
标签: python sorting combinations itertools