python - 如何对两个迭代器“列表”中的值求和?
问题描述
我有两个迭代器,它们由一个看起来像这样的“列表”组成:
[[1, 2, 3, 4, 5, 6],
[2, 4, 6, 8, 10, 12],
[3, 5, 8, 6, 1, 19],
[5, 9, 1, 9, 4, 6]]
for
或者,如果我只是对它们运行一个循环,这就是它的样子。
迭代器而不是列表本身的原因是由于内存。真正的列表/数组要大得多,这只是一个例子。我需要做的是获取一个列表并将列表内每个索引的列求和以获取所有“外部”索引,然后将它们添加到两个列表中,例如sum(list1) + sum(list2)
.
所以基本上:
list1: list2:
[[1, 2, 3, 4, 5, 6], [[5, 4, 3, 2, 1, 9],
[2, 4, 6, 8, 10, 12], [6, 3, 8, 1, 1, 6],
[3, 5, 8, 6, 1, 19], [1, 3, 2, 8, 2, 3],
[5, 9, 1, 9, 4, 6]] [5, 2, 9, 4, 2, 5]]
=> =>
[11, 20, 18, 20, 43] [17, 12, 22, 15, 23]
=>
[28, 32, 40, 35, 66]
所以我遍历这两个列表,对于每个列表,我需要对列求和,然后最后将最后两个列表的列合并为一个组合列表。
如果只是常规列表,我知道如何执行此操作,但由于这是迭代器/生成器(不知道正确的术语),我真的不确定它是如何完成的。
解决方案
您可以使用它来对每个求和,而无需将所有内容加载到内存中:
def sumIter(iter):
result = [0, 0, 0, 0, 0, 0] #Assuming there are always 6 items in each sub-list
for list in iter:
result = [(result[i] + list[i]) for i in range(6)]
进而:
sum1 = sumIter(iter1)
sum2 = sumIter(iter2)
result = [(sum1[i] + sum2[i]) for i in range(6)]
推荐阅读
- go - GORM:通用方式的crud操作符
- python - 为什么 pip install 有时会选择不兼容的版本?
- javascript - 删除文本区域开头和结尾的空白
- iperf3 - 默认的 iperf3 值是多少?
- gradle - 如何将模块中的排除项聚合到根排除项中?
- db2 - 带有缓冲池错误的 DB2 表空间 (SQLSTATE=42601)
- ruby-on-rails - 当 RAILS_ENV 设置为“生产”时,Rails 服务器命令失败
- mysql - 使用 HAVING 的 MYSQL 查询无法正常工作
- regex - 正则表达式隔离并替换字符串中的单个空格
- r - samr 分析:如何解释中值 FDR/90th perc FDR=0.000000?