将元组的迭代转换为每个元素的迭代(Python)

时间:2018-02-03 14:10:13

标签: python python-3.x iterable generator-expression

我有一个可迭代delta,它生成两个数字(dx, dy)的元组,我想计算每个数字的总和。由于delta在第一次迭代后处理,因此以下内容无效。

x = sum(dx for dx, dy in delta)
y = sum(dy for dx, dy in delta)

有什么想法吗?我正在考虑以某种方式将delta转换为dxdy的两个迭代,但到目前为止还没有达到任何目标。

2 个答案:

答案 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

使用发生器的想法是你可以耗尽一次,那么为什么不一次完成所有的数学运算呢?