I want to calculate the product sum of two lists using reduce() and a regular function.
The regular function to return the product is defined as:
def func(maturity, weight):
return maturity * weight
and the reduct function is like:
reduce(func, zip(terms, weights))
An error
"TypeError: can't multiply sequence by non-int of type 'tuple'"
then appears. Is there any way to pass the regular function instead of lambda to calculate the product sum of the two lists?
I think you're mis-understanding the use of
reduce
. What it does is apply an operation repeatedly on a vector to produce a scalar as the end result. What you want to do is apply the same function on separate elements which are not related. For that purpose, you needmap
:As Jon Clements noted, if your function is as simple as element-wise multiplication, you might consider using
operator.mul
instead: