python - 获取循环中理解列表生成的乘法列表中的值的总和
问题描述
我在循环中有一个理解列表,它将导致多个列表,如下所示:
[1,3,5,7,9,12]
[7,9,0,4,12,3 ] [9,4,8,
3,1,6]
[21,11,12,32,2, 12]
我不需要这个列表本身,而只需要这个列表中相同索引值的总和,如下所示:
[38,27,25,54,33](例如,38 是每个列表 1+7+9+21 中的第一个值)
我曾尝试使用 list/map/sum/zip 的组合来做到这一点:
list(map(sum,zip([func(data,x) for x in list(range(num)])))
其中“list(range(num)”是需要求和的列表数,
“ func(data,x)”是生成列表本身的函数
但它不起作用,因为 zip(),只需要像 zip(a,b,c) 这样的数据
看起来很简单,但我已经花了两天时间试图了解如何解决这个案例。
有什么办法可以得到这些列表的总和吗?
解决方案
一旦你有你的结果列表,并且所述列表中的所有子列表的长度相同 - 将它们全部放在一个列表中并且简单地 -
[sum(item[i] for item in results) for i in range(len(results[0]))]
您的结果列表在哪里results
。
不完全确定您是如何生成这些结果的,但我假设这就是您获得上述结果列表的方式-
[func(data,x) for x in range(num)]
(请不要list(range(num))
,range
返回一个对列表理解有效的生成器)
你只需要做
results = [func(data,x) for x in range(num)]
print([sum(item[i] for item in results) for i in range(len(results[0]))])
同样,这是假设func(data, x)
返回一个列表(在此过程中长度恒定)
输入
# assume results = [[1,3,5,7,9,12],[7,9,0,4,12,3],[9,4,8,3,1,6],[21,11,12,32,2,12]]
print([sum(item[i] for item in results) for i in range(len(results[0]))])
输出
[38, 27, 25, 46, 24, 33]
推荐阅读
- excel - 如果整数删除小数 - Excel
- android - Jetpack compose 中的波浪盒
- c# - 在 C# 中检查是否存在仅具有部分名称的文件夹
- asp.net - 根据 asp.net 身份中的角色将登录用户或管理员重定向到特定页面或视图
- mysql - 在 Node.JS 中使用更新查询来执行算术计算(从起点扣除,信用目标)
- python - cv.imread 的内存问题
- tensorflow - 如何使用反向传播/梯度节点生成和保存模型文件?
- python - Python Pandas 根据列值过滤行返回 NaN
- javascript - 区分不同类型的 beforeunload 事件
- python - DataFrame 字符串数据操作