函数式编程
函数式编程
Functional Programming, 又称函数程序设计, 泛函编程
是一种编程泛型
避免使用程序状态以及易变对象
在Python中, 函数式编程主要由几个函数的使用构成: lambda(), map(), reduce(), filter().
lambda
用来定义行内函数.
map
假设有一个列表a = [1, 2, 3]
, 要给列表内每个元素都加2得到一个新列表.
我们首先定义一个函数, 然后再用map()将函数逐一应用到map列表中的每个元素, 最后返回一个数组.
使用map()的效率要高于使用列表解析. 因为, 列表解释本质上还是使用的python的for循环, 而Python的for循环效率不高; map函数循环速度相当于c语言.
reduce
reduce函数有点像map函数. map函数用于逐一遍历, 而reduce函数用于递归计算.
下面是一个计算n阶乘的例子.
其中:
range(1, n+1)
给出了一个列表, 元素是1-n这n个整数lambda x, y: x*y
构造了一个二元函数, 返回两个参数的乘积reduce函数将列表的前两个元素作为lambda函数的参数进行计算, 然后将计算结果与第三个元素再作为lambda函数的参数计算, 以此类推, 知道遍历列表所有元素, 返回最终结果
等同于:
filter
过滤器, 用来筛选列表中符合条件的元素.例如:
使用filter函数, 首先需要一个返回bool类型的函数, 如上: lambda x: x > 5 and x < 8, range(10), 该函数判断x是否满足限制条件, filter将函数作用到range(10)的每个元素, 挑选出使函数返回True的元素, 组成列表返回.
示例
为每个元素调用函数处理
最后更新于
这有帮助吗?