在之前的函数中,无论是传入的参数还是返回值,都是以6种标准数据为基础的,但还有种函数,参数或返回值是其他函数,称作为高阶函数
常见的高阶函数
1,filter(function,iterable)
作用:将可迭代对象iterable中的每个元素作为参数传递给函数function,根据函数返回判断为True或Flase,把判断为True的iterable中的元素构建新的迭代器并返回
a = filter(lambda x : x-1, [1,2,3,4])
print(a)
print(list(a))
输出为
<filter object at 0x000001F8A31C36D0>
[2, 3, 4]
2, map(func,*iterable)
作用:将可迭代对象iterable中的每个元素作为参数传递给函数function,以迭代器形式返回所有结果。不过此时可以传入多个可迭代器对象,且最短的耗尽就停止
a = map(lambda x,y : x+y, [1,2,3,4],[1,2,3])
print(a)
print(list(a))
输出为
<map object at 0x000001F8A2D42670>
[2, 4, 6]
3, reduce(func,iterable[,initial])
作用:
- 若没有指定initial,将iterable的前两个元素传给函数func,把函数返回结果以及iterable的下一个元素又作为参数传入函数,把最后的值返回
- 若有指定initial,将initial和iterable的第一个元素作为参数调用函数,把函数返回结果以及iterable的下一个元素又作为参数传入函数,把最后的值返回
注意如今要先导入functools模块才能使用这个函数
from functools import reduce
a = reduce(lambda x,y : x+y, [1,2,3,4])
print(a)
b = reduce(lambda x,y : x+y, [1,2,3,4],2)
print(b)
输出为
10
12