高阶函数:

变量可以指向函数,所以函数名也是变量,是变量就能作为参数传入另一函数中,这种参数中带有函数参数的函数就称为高阶函数。

我们应该都知道ads()函数是求绝对值的函数:如下所示的add()则是一个高阶函数


add()

map/reduce:

map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回,例如:计算每一元素的立方次幂


立方次幂

我们也可以使用map()函数,计算任意复杂度的函数,把定义好的函数与序列传入map()就可完成,方便简洁。

reduce把一个函数作用在一个序列[x1, x2, x3…]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。当函数是做加法运算时与sum()函数功能相同。但是reduce最主要的作用则依赖于所传入的函数。


函数fn()自己随意写的

map() 、reduce()结合使用:


map() 、reduce()结合使用

filter()函数:

filter()函数与map()类似,但filetr用于过滤序列,接收一个函数与一个序列,他把传入的函数一次作用于序列中的每一元素,且是通过返回值的True还是False决定保留还是丢弃该元素。


过滤留下符合条件得元素

sorted()函数:

sorted()函数也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。

通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。


倒序排序

默认情况下,对字符串排序,是按照ASCII的大小比较的,由于\’Z\’ < \’a\’,结果,大写字母Z会排在小写字母a的前面。


忽略大小写排序