Reduce加匿名函数

最近看到朴素贝叶斯的源码示例中有这么一段

from functools import reduce
def classifyNB(vec2Classify,p0V,p1V,pAb):
    p1=reduce(lambda x,y:x*y ,vec2Classify* p1V) *pAb
    p0=reduce(lambda x,y:x*y,vec2Classify* p0V)*(1-pAb)
    print("p0:",p0)
    print('p1:',p1)
    if p1>p0:
        return 1
    else:
        return 0

又学到一个新的知识点,那就是reduce加lambda匿名函数的作用
Python的lambda表达式、filter、map、reduce等函数的用法 - gdjlc - 博客园 (cnblogs.com)

reduce()函数对一个数据集合的所有数据进行操作:用传给 reduce 中的函数 function(必须有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
在Python2中reduce()是内置函数,Pytho3移到functools 模块。

function -- 函数,有两个参数
iterable -- 可迭代对象
initializer -- 可选,初始参数

from functools import reduce

def add(x, y):
    return x + y
def mulit(x, y):
    return x * y

print(reduce(add, [1, 2, 3, 4, 5], 10)) #输出:25

print(reduce(mulit, [1, 2, 3, 4, 5])) #输出:120
print(reduce(mulit, [1, 2, 3, 4, 5], 10)) #输出:1200

print(reduce(lambda x,y:x+y,[1, 2, 3, 4, 5]))#输出:15
print(reduce(lambda x,y:x+y,[1, 2, 3, 4, 5], 10))#输出:25 


你可能感兴趣的:(Reduce加匿名函数)