高阶函数:把函数作为参数的函数。
主要说一下python里面比较常用的几个高阶函数
map函数
map(func, iterator);
map函数有两个参数,第一个是一个函数参数func,第二个是一个序列。map函数会对序列的每一个元素都调用一遍func函数。
返回值
python2:返回列表
python3:返回一个迭代器
举一个例子说明:
def dou(x):
return x * x
l1 = list(map(dou, [1, 3, 5]))
print(l1)
返回的结果应该是 [1, 9, 25]
reduce函数
reduce(func, iterator);
第一个参数是一个函数func(func要求必须要有两个参数),第二个参数是一个序列,reduce函数起到“聚集”的作用,reduce会每次拿出一个元素和之前调用func返回的值作为参数继续传给func。也就是起到了下面的效果:
reduce(func, [x1, x2, x3, x4]) == func(func(func(x1, x2), x3), x4)
reduce函数返回一个最终的值。
注意:python3中想要使用reduce的话,必须要导入functools模块
filter函数
** filter(func, iterator);**
毫无意外,filter函数还是这两种参数。该函数起到一个过滤作用,还是func作用于每一个元素,然后filter函数根据返回的是True/False,决定保留/删除该元素。
返回值是一个迭代器,所以要强行转化成list才能用。
举一个过滤掉序列中偶数的例子:
def func(x):
return x % 2 == 1
l1 = list(filter(func, [1, 2, 3, 4, 5]))
print(l1)
返回值应该是[1, 3, 5]
sorted函数
sorted(list)
sorted的参数有1个,是一个list,是待排序的序列,可以按照从小到大的顺序排序,如果对这种排序方法不满,可以再传入第二个参数key,代表以何种方式定义大小,如果还不满意,可以规定从大到小排序。
如下:
L = [-1, 4, 63, -33]
sorted(L, key = abs, reverse = True)
我们传入了abs函数,代表以绝对值大小排序,reverse = True代表从大到小排序。