使用常规函数Reduce()

时间:2017-08-28 06:17:25

标签: python python-2.7 function reduce callable

我想使用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来计算两个列表的乘积之和?

2 个答案:

答案 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))

snippet