Python中的函数式编程

函数式编程

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

函数式编程的优点:一、天然的支持并发编程,能够避免死锁、饥饿等线程安全问题(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中取出一个元素

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

推荐阅读更多精彩内容