将元组的可迭代转换为每个元素的可迭代(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
转变为 dx
和 dy
的两个可迭代对象,但到目前为止一无所获。
使用 zip()
和 map()
函数在每一列上应用 sum()
:
x, y = map(sum, zip(*delta))
这应该可以做到!
ysum = 0
xsum = 0
for dx, dy in delta:
xsum += dx
ysum += dy
发电机的想法是你可以耗尽它一次,那么为什么不一次完成所有的数学运算呢?
我有一个可迭代的 delta
生成两个数字 (dx, dy)
的元组,我想计算每个数字的总和。以下不起作用,因为 delta
在第一次迭代后被处置。
x = sum(dx for dx, dy in delta)
y = sum(dy for dx, dy in delta)
有什么想法吗?我正在考虑以某种方式将 delta
转变为 dx
和 dy
的两个可迭代对象,但到目前为止一无所获。
使用 zip()
和 map()
函数在每一列上应用 sum()
:
x, y = map(sum, zip(*delta))
这应该可以做到!
ysum = 0
xsum = 0
for dx, dy in delta:
xsum += dx
ysum += dy
发电机的想法是你可以耗尽它一次,那么为什么不一次完成所有的数学运算呢?