>>> from env_helper import info; info()
页面更新时间: 2020-03-08 09:59:51
操作系统/OS: Linux-4.19.0-8-amd64-x86_64-with-debian-10.3 ;Python: 3.7.3

13.4. 函数式编程

函数式编程的核心就是把函数当成对象来进行编程。

有两个常用到的方法:map/reduce,filter,其中map和filter是内建方法,而reduce不是,所以需要import相关模块。

map接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而map可以把第二个参数的变量映射到函数中一一进行处理,结果以list形式返回。

>>> def f(x):
>>>     return x*x
>>> r = map(f,[1,2,3,4,5,6])
>>> list(r)
[1, 4, 9, 16, 25, 36]

reduce接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而reduce可以把第二个参数每一次next方法执行的结果映射到函数中进行处理,然后返回一个计算后的值。其实质就是不断的嵌套把此层函数作为下一层函数的参数直到最后。

>>> from functools import reduce
>>> def add(x,y):
>>>     return x+y
>>> reduce(add,[1,3,4,7,9])
24
>>> reduce(add,[1])
1

filter接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而map可以把第二个参数的变量映射到函数中,根据true/false过滤,结果以list形式返回。

>>> def is_odd(n):
>>>     return n % 2 == 1
>>> list(filter(is_odd, (1, 2, 4, 5, 6, 9, 10, 15)))
[1, 5, 9, 15]