我有一个可迭代delta
,它生成两个数字(dx, dy)
的元组,我想计算每个数字的总和。由于delta
在第一次迭代后处理,因此以下内容无效。
x = sum(dx for dx, dy in delta)
y = sum(dy for dx, dy in delta)
有什么想法吗?我正在考虑以某种方式将delta
转换为dx
和dy
的两个迭代,但到目前为止还没有达到任何目标。
答案 0 :(得分:5)
使用zip()
和map()
函数在每列上应用sum()
:
x, y = map(sum, zip(*delta))
答案 1 :(得分:3)
应该这样做!
ysum = 0
xsum = 0
for dx, dy in delta:
xsum += dx
ysum += dy
使用发生器的想法是你可以耗尽一次,那么为什么不一次完成所有的数学运算呢?