前言
map()
、reduce()
、filter()
是python的三个高阶函数。所谓高阶函数,指的是将函数作为参数并返回函数作为结果的函数。下面代码的sing_ready
只是一个简单高阶函数示例:
def ready(name): return f"ready,{name}!" def sing_ready(f,n): print(f(n)) sing_ready(ready,"freddie") # ready,freddie!
map函数
map()
函数接收一个函数和一系列可迭代对象作为参数,并将函数作用于可迭代对象中的每个元素后输出。示例如下:
# 语法:map(函数,可迭代对象) def f1(a:int) -> int: return a*a print(list(map(f1,[i for i in range(10)]))) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
也可以使用lambda
匿名函数实现相同功能
print(list(map(lambda x:x*x,[i for i in range(10)]))) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
filter函数
filter()
函数,顾名思义,具有”筛选“功能,用于生成在调用其它函数时返回为true
的值的列表。示例如下:
# 语法:filter(函数,可迭代对象) # 筛选偶数 def f2(a:int) -> int: return a%2 == 0 print(list(filter(f2,[i for i in range(10)]))) # [0, 2, 4, 6, 8] # 或使用lambda匿名函数 print(list(filter(lambda x: x%2==0,[i for i in range(10)]))) # [0, 2, 4, 6, 8]
reduce函数
reduce
,意”减少“。reduce(function,iterable)
对iterable
中每个元素以及上一次调用的返回结果,调用function
进行处理。
在python2中,reduce()
是内置函数。在python3中,需要from functools import reduce
。
示例:
from functools import reduce print(reduce(lambda a,b:a+b, [i for i in range(6)])) # 15 ## 0 + 1 + 2 + 3 + 4 + 5 = 15