我想使用reduce()和常规函数计算两个列表的乘积和。
返回产品的常规功能定义为:
def func(maturity, weight):
return maturity * weight
和还原功能如下:
reduce(func, zip(terms, weights))
错误
"TypeError: can't multiply sequence by non-int of type 'tuple'"
然后出现。有没有办法传递常规函数而不是lambda来计算两个列表的乘积之和?
答案 0 :(得分:1)
我认为你误解了 <input name="someName[i]" [(ngModel)]="r.characteristics[key]">
的用法。它的作用是在向量上重复应用一个操作,以产生一个标量作为最终结果。你想要做的是在不相关的单独元素上应用相同的功能。为此,您需要reduce
:
map
正如Jon Clements所指出的,如果你的函数像逐元素乘法一样简单,你可以考虑使用out = map(func, terms, weights)
代替:
operator.mul
答案 1 :(得分:0)
错误是因为你正在增加元组,
func
中的两个参数都是类似于
('A',1),('B',2)
如果你在索引1上获取元素,它将起作用。
def func(maturity, weight):
return maturity[1] * weight[1]
terms = ['A', 'B', 'C']
weights = [1, 2]
reduce(func, zip(terms, weights))