高阶函数
什么是高阶函数?将函数作为参数传入,这样的函数称之为高阶函数。
变量可以指向函数,函数的参数可以接收变量,也就是说一个函数可以接收另一个函数作为参数,这种函数称之为高阶函数,如下图所示:
def fun1(a, b, fun):
return fun(a)*fun(b)
print(fun1(-5, 2, abs))
或者一个函数的返回值是为另外一个函数(若返回值为函数本身则是递归),这种也称之为高阶函数,如下图所示
def car():
print('this is the car....')
def fun2(fun):
print('this is in fun.....')
return fun
res = fun2(car)
res()
Python 内置的高级函数
- 高阶函数-map
map(fun, lst), 将传入的函数变量fun作用到lst变量的每个元素中,并将结果组成新的列表返回。其返回值是一个迭代器对象。
lst1 = [5, 9, 1, 6, 7, 2]
def cube(x):
# 求立方
return x*x*x
print(list(map(cube, lst1))) # [125, 729, 1, 216, 343, 8]
lst2 = [2,4]
def add(x, y):
return x+y
# map 也可以接收多个list,可用两个列表的对应索引数据进行操作
print(list(map(add,lst1,lst2))) # [7, 13]
- 高阶函数-reduce
reduce(func(x,y),lst) 把一个函数作用在一个序列上,这个函数必须接收两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。
from functools import reduce
lst1 = [2, 6, 4, 1, 7]
def fun(x,y):
return x + y
print(reduce(fun, lst1))
- 高阶函数-filter
filter(func, lst) 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
lst1 = [2, 6, 4, 1, 7]
def fun1(x):
return x%2 == 0
print(list(filter(fun1, lst1))) # 过滤掉列表中非偶数