gpt4 book ai didi

python - Python中具有不同长度的列表列表中元素的总和

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:30 25 4
gpt4 key购买 nike

我正在尝试计算列表列表中元素的总和。如果主列表中的列表都具有相同的大小,我可以毫不费力地计算总和,如下所示:

a = [[4], [8], [15]]
total = [sum(i) for i in zip(*a)]

结果:

total = [27]     #(4 + 8 + 15) = 27, GOOD!!!

但是有可能我在主列表中有一个不同大小的列表,例如:

a = [[3], [4, 6], [10]]

预期结果:

total = [17, 19]     #(3 + 4 + 10) = 17, (3 + 6 + 10) = 19

我卡在这里了,显然我对等长列表的解决方案不起作用。按照我定义的方式获得结果的最佳方法是什么?我的直觉是找出最大长度的列表,然后通过添加零将其他列表扩展到该长度,最后分别计算总和。不过,这听起来像是一个丑陋的解决方案,我想知道是否有一种快速且更优雅的方法来做到这一点。

谢谢!

编辑:应该更好地解释它。我也有点困惑……下面是更好的例子:

列表 a 中列表中的元素数量永远不会超过 2。示例:

a = [[1], [10], [5]] #Expected result: [16] (1+10+5)

a = [[1, 10], [3], [4]] #Expected result: [8, 17] (1+3+4, 10+3+4)

a = [[1, 10], [3], [2, 8]] #Expected result: [6, 12, 15, 21] (1+3+2, 1+3+8, 10+3+2, 10+3+8)

EDIT2:接受的答案独立于列表大小计算正确的结果。

最佳答案

疯狂的猜测:你想要每一个可能的总和,即你从 every possible selection 中得到的总和子列表中的元素?

>>> from itertools import product
>>> a = [[4], [8], [15]]
>>> [sum(p) for p in product(*a)]
[27]
>>> a = [[3], [4, 6], [10]]
>>> [sum(p) for p in product(*a)]
[17, 19]

检查此解释的一种方法是查看您是否喜欢它在评论中为测试提供的答案:

>>> a = [[1,2], [3,4,5], [6,7,8,9]] # Tim Pietzcker's example
>>> [sum(p) for p in product(*a)]
[10, 11, 12, 13, 11, 12, 13, 14, 12, 13, 14, 15, 11, 12, 13, 14, 12, 13, 14, 15, 13, 14, 15, 16]

关于python - Python中具有不同长度的列表列表中元素的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24024044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com