1.高阶函数的定义
高阶函数是一个返回函数的函数。
他的实参是一个函数名,他的返回值是一个函数。
函数可以赋值给变量,变量也可以指向函数
高阶函数传递的参数包括函数名
2.内置的高阶函数
(1)map函数
map()函数接收俩个参数,一个是函数,一个是序列。
map将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列返回。
(2) reduce函数
reduce:把一个函数作用在一个序列上,这个函数必须接收俩个参数,reduce把结果继续和序列的下一个元素做累计算
如:累积
reduce(f,[x1,x2,x3,x4,x5]) = f(f(x1,x2),x3),x4)
python2:reduce是内置函数
python3:需要先 from functools import reduce 将reduce函数导入进来
(3)filter函数
filter过滤函数和map()类似,也接收一个函数和一个序列,但是和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
(4)sorted函数
默认sort方法和sorted函数都是由小到大进行排序,reverse=True是由大到小。
示范:
例题:
携程春招题:
给定一个整型数组,将数组中所有的0移动到末尾,非0项保持不变;在原始数组上进行移动操作,勿创建新的数组;
输入:
第一行是数组长度,后续每一行是数组的一条记录;
4
0
7
0
2
输出:
调整后数组的内容:
4
7
2
0
0
3.匿名函数
匿名函数:关键字为lambda ,冒号前面是形参 ,冒号后面是返回值
代码块重复,这时候必须考虑用到函数,降低程序的冗余度
代码块复杂,这时候可以考虑用到函数,降低程序的可读性
在Python,有两种函数,一种是def定义,一种是lambda函数
假如要求两个数之和,用普通函数或匿名函数如下
def func(x,y):return x+y
lambda x,y: x+y
格式:lambda *args,**kwargs:(args,kwargs)
(1)应用:求和
(2)求平方
(3)找出100以内的所有偶数
(4)移动数组中的0
4.快速生成验证码,内推码
上面函数能生成验证码,但是代码不够简单,代码优化如下:
上面是俩种能生成内推码的函数,现在我们来快速生成多个内推码