高阶函数,把函数作为参数的函数
a = [1,2,3,4,5]
def gf(f,alist):
return f(alist)
print(f'a列表的总和为{gf(sum,a)}')
print(f'a列表的最大值为{gf(max,a)}')
print(f'a列表的最小值为{gf(min,a)}')
a列表的总和为15
a列表的最大值为5
a列表的最小值为1
四个常用的高阶函数
映射map
map(f,[a1,a2,a3])—> [f(a1),f(a2),f(a3)]
print(list(map(abs,[-2,-1,-3])))
[2, 1, 3]
匿名函数 lambda
适用于在一条语句中定义一个简单的函数,
print(list(map(lambda i:sum(i),[(1,2),(3,4),(5,6)])))
[3, 7, 11]
递归函数 reduce
reduce(f,[a,b,c]) —> f(f(a,b),c)
from functools import reduce
print(reduce(lambda i,j:i*2+j,[1,2,3,4]))
该语句等价于 ((2*1+2)*2+3)*2+4
过滤filter
a = [44,76,55,98,56,33,88]
plist = list(filter(lambda i:i<60 , a))
print(plist)
该语句可以得到a中小于60的值,filter过滤掉了大于60的人.
排序sorted
按照给定的规则进行排序.
a = [-3,-1,2,4,0]
按照绝对值进行排序:
print(sorted([-3,-1,2,4,0],key = abs))
按照余4后的值进行排序
print(sorted([-3,-1,2,4,0],key = lambda i:i%4))