list_ = [(1, 2), (3, 4)]
从内元组中获取有序对的总和并乘以总和的Pythonic方法是什么?对于上面的例子:
(1 + 3) * (2 + 4) = 24
答案 0 :(得分:7)
例如:
import operator as op
import functools
functools.reduce(op.mul, (sum(x) for x in zip(*list_)))
适用于初始数组的任何长度以及内部元组。
使用numpy的另一种解决方案:
import numpy as np
np.array(list_).sum(0).prod()
答案 1 :(得分:0)
如果列表很小,我认为使用operator
和itertools
这样的东西就是将大锤应用于坚果。同样numpy
。纯Python有什么问题?
result = 1
for s in [ sum(x) for x in zip( *list_) ]:
result *= s
(虽然如果纯粹会更好
Python内置product
以及sum
)。此外,如果你只专门处理成对的2元组,那么任何形式的迭代都是一个大锤。只需编码
result = (list_[0][0]+list_[1][0] )*( list_[0][1]+list_[1][1])