前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实现对规整的二维列表中每个子列表对应的值求和

Python实现对规整的二维列表中每个子列表对应的值求和

作者头像
Python进阶者
发布2022-06-05 09:19:49
4.5K0
发布2022-06-05 09:19:49
举报

别来沧海事,语罢暮天钟。

大家好,我是Python进阶者。

一、前言

前几天在Python白银交流群有个叫【dcpeng】的粉丝问了一个Python列表求和的问题,如下图所示。

代码如下:

代码语言:javascript
复制
lst = [[1, 2, 3, 4], [1, 5, 1, 2], [2, 3, 4, 5], [5, 3, 1, 3]]
s1 = 0
s2 = 0
s3 = 0
s4 = 0
for i in lst:
    s1 += i[0]
    s2 += i[1]
    s3 += i[2]
    s4 += i[3]
print(list([s1, s2, s3, s4]))

上面的这个代码可以实现,但是觉得太不智能了,如果每个子列表里边有50个元素的话,再定义50个s变量,似乎不太好,希望可以有个更加简便的方法。

二、实现过程

关于这个题目,大佬们一共给了3种方法,这里整理出来,给大家一起学习。

【瑜亮老师】解法

这里【瑜亮老师】给了一个代码,如下所示:

代码语言:javascript
复制
lst = [[1, 2, 3, 4], [1, 5, 1, 2], [2, 3, 4, 5], [5, 3, 1, 3]]

[print(sum(i)) for i in zip(*lst)]

使用了列表解包的方法,完成了需求,确实很赞。

【Daler】解法

一开始【猫药师Kelly】大佬给了一个思路,使用np array实现,后来【Daler】直接安排了一份代码,如下所示:

代码语言:javascript
复制
import numpy as np

lst = [[1, 2, 3, 4], [1, 5, 1, 2], [2, 3, 4, 5], [5, 3, 1, 3]]

list1 = np.sum(lst, axis=0)  # 按照纵轴计算
list2 = np.sum(lst, axis=1)  # 按照横轴计算
print(list1)
print(list2)

这里使用numpy库进行实现,也非常赞!

【月神】解法

这里【月神】给了一个难顶的解法,使用了内置函数和匿名函数来实现,代码如下所示:

代码语言:javascript
复制
from functools import reduce

lst = [[1, 2, 3, 4],
      [1, 5, 1, 2, 6],
      [2, 3, 4, 5],
      [5, 3, 1, 3]]

print(list(reduce(lambda x, y: map(lambda i, j: i + j, x, y), lst)))

以上就是针对该问题的三个解决方法了,真是太强了!如果你还有其他方法,欢迎尝试,有结果的话,欢迎分享给我噢!

三、总结

大家好,我是Python进阶者。这篇文章主要分享了使用Python实现对规整的二维列表中每个子列表对应的值求和的问题,文中针对该问题给出了具体的解析和代码演示,一共3个方法,顺利帮助粉丝顺利解决了问题。

最后感谢粉丝【dcpeng】提问,感谢【瑜亮老师】、【月神】、【Daler】给出的代码和具体解析,感谢粉丝【猫药师Kelly】等人参与学习交流。

小伙伴们,快快用实践一下吧!

------------------- End -------------------

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫与数据挖掘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、实现过程
    • 【瑜亮老师】解法
      • 【Daler】解法
        • 【月神】解法
        • 三、总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档