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 


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容