Python中的函数式编程

作者: 爱跑步的coder | 来源:发表于2017-12-05 23:28 被阅读22次

    函数式编程

    说到函数式编程,我们的重点在于为什么要采用函数式编程,而不是什么是函数式编程。

    函数式编程的优点:一、天然的支持并发编程,能够避免死锁、饥饿等线程安全问题(Because of no-mutation)。二、写法简洁,通常多行的代码只需一行就能搞定。

    在Python中,匿名函数是函数式编程的基础。

    匿名函数

    顾名思义,也就是没有名称的函数。如下所示,就是一个匿名函数,它指代的是f(x) = -x

    lambda x:-x
    

    函数中的世界里有很多的分段函数。那该如何表示呢?

    lambda x:-x if x<0 else x
    

    那如果是三个分支呢?

    lambda x:-x if x<0 else (x if x>0 else 0)
    

    map、reduce、filter、sorted

    map函数其实就是一个映射函数,将集合(包括元组、列表、集合等结构)中的每一个数据进行映射,然后得到结果,保存到列表中。

    data = range(-10, 10)
    map(lambda x:x**2, data)
    

    reduce函数是累积函数,每次取出列表中的一个元素,然后和当前值进行计算,得到一个值,再拿该值与列表的下一个元素进行运算,直到得到最终结果。(其中第一步是取出初始值和列表的第一个元素进行运算,默认初始值为0)

    data = range(-10, 10)
    reduce(max, data, 0)
    

    filter函数是过滤函数,只保留符合列表中符合条件的元素,并保存到一个新的列表中。

    data = range(-10, 10)
    filter(lambda x:x>-5 and x<5, data)
    

    sorted函数是排序函数,默认是升序排列,如果我们要写成降序的话,就要新写一个函数。具体如下所示:

    reversed_cmp = lambda x,y:-1 if x>y else(1 if x<y else 0)
    sorted(range(-10,10), reversed_cmp) 
    

    reduce(lambda x,y : x+y, [1,2,3,4,5], 0)
    其中x表示的是累积结果,y表示是每次从list中取出一个元素

    相关文章

      网友评论

        本文标题:Python中的函数式编程

        本文链接:https://www.haomeiwen.com/subject/vsmhixtx.html