Python中具有不同长度的列表列表中的元素总和
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python中具有不同长度的列表列表中的元素总和,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1488字,纯文字阅读大概需要3分钟。
内容图文
![Python中具有不同长度的列表列表中的元素总和](/upload/InfoBanner/zyjiaocheng/724/56907e6b6eae4dc59f495b8ad6485a77.jpg)
我试图计算列表列表中的元素总和.如果主列表中的列表都具有相同的大小,我可以毫不费力地计算总和,如下所示:
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
我被困在这里,显然我的相同大小的列表的解决方案不起作用.以我定义的方式获得结果的最佳方法是什么?我的直觉是找出具有最大长度的列表,然后通过添加零将其他列表扩展到该长度,最后分别计算总和.这听起来像一个丑陋的解决方案,我想知道是否有一个快速,更优雅的方式来做到这一点.
谢谢!
编辑:应该更好地解释它.我也有点困惑……以下是更好的例子:
列表中列表中元素的数量永远不会超过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中具有不同长度的列表列表中的元素总和所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。