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

Turn iterable of tuple into iterables of each element (Python)

我有一个可迭代的 delta 生成两个数字 (dx, dy) 的元组,我想计算每个数字的总和。以下不起作用,因为 delta 在第一次迭代后被处置。

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

有什么想法吗?我正在考虑以某种方式将 delta 转变为 dxdy 的两个可迭代对象,但到目前为止一无所获。

使用 zip()map() 函数在每一列上应用 sum()

x, y = map(sum, zip(*delta))

这应该可以做到!

ysum = 0
xsum = 0

for dx, dy in delta:
    xsum += dx
    ysum += dy

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