如何在Python中对二维列表的子数组分别求和?
解决方案
你可以用两种简洁的方式实现二维列表每个子数组的单独求和:
方法一:列表推导式
这是最直观易读的写法,遍历二维列表中的每个子数组,对每个子数组直接调用sum()函数:
x = [[1, 2], [3, 4], [5, 6]] sum_2d = [sum(sub_array) for sub_array in x] # 输出结果: [3, 7, 11]
方法二:map函数结合sum
利用map()将sum()函数批量应用到每个子数组上,最后转为列表即可:
x = [[1, 2], [3, 4], [5, 6]] sum_2d = list(map(sum, x)) # 输出结果: [3, 7, 11]
原代码问题说明
你写的sum(sum(x, []))会先通过sum(x, [])把二维列表展平成一维列表(相当于把所有子数组依次拼接成一个大列表),再对这个一维列表求和,所以得到的是所有元素的总和,而非每个子数组的单独和。比如sum(x, [])会得到[1,2,3,4,5,6],再sum就得到21,这和你的需求不符。
内容的提问来源于stack exchange,提问作者L.Ballaty
相关产品推荐
相关产品推荐

