22. 高阶函数

48 阅读1分钟

在之前的函数中,无论是传入的参数还是返回值,都是以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