高阶函数的室参是一个函数名,返回值是一个函数。
1.abs函数:求绝对值
abs函数可以用来直接求绝对值,函数本身也可以赋值给变量,变量也可以指向函数
传递的参数可以是函数名,返回值是函数f(x),f(y)。
内置高阶函数
map函数
map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的序列返回。
map函数通过接受的函数对接受的序列的每一个值进行处理。
reduce函数
reduce函数同样是接受两个参数,一个是函数,一个是序列,但这个接受的函数必须从接受的序列中接受两个参数,之后把函数执行的结果继续和序列的下一个元素作累积计算。
使用这个函数必须先导入一个模块:
from functools import reduce
比如这个函数,事先写一个两相加的函数add,reduce函数接受add函数和列表[1,2,3,4,5]之后add函数先接收前两个参数,进行相加,得出结果后在与下一个参数进行相加,以此类推。
filter过滤函数
和map()类似,也接收一个函数和一个序列,但fileter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False来决定保留还是丢弃该元素。
输出0到9的所有偶数,filter根据函数返回值的真假来决定是否保留元素。
sorted函数
sorted函数一般用来对序列进行排序。
定义一个序列,假设第一列表示商品名称,第二列表示商品数量,第三列表示商品价格,接下来要对这个序列进行排序
定义两个函数,一个按照数量进行排序,另一个按照数量进行排序。
按数量升序排序
按价格升序排序。
这里我们看出,key后面的函数决定排序的方式,大家可以根据自己的需求定义函数。
匿名函数
匿名函数的关键字:
lambda 型参 : 返回值
冒号前面是形参,冒号后面是返回值
如这个函数,型参为x,y返回值为x+y,再用reduce函数传递参数,就可以直接对数字进行求和。
lambda函数还有很多用法,这里就不一一列举了。