高阶函数:
高阶函数是指包含函数参数的函数,在函数中利用另一个函数进行操作。本文将分别介绍map、reduce、filter、sorted四个高阶函数。
1. map
map()函数接受一个函数和一个可迭代对象,并将函数陆续作用到可迭代对象的每一个元素上,并将所有结果整合成新的迭代器返回
mapResult = map(str,[1,2,3,4])
print(type(mapResult))
mapString = list(mapResult)
print(mapString)
from collections.abc import Iterator
isinstance(mapResult,Iterator)
结果:
><class 'map'>
>['1', '2', '3', '4']
>True
2.reduce
reduce函数同样也是传入一个函数和一个可迭代对象,每次传入函数需要两个对象陆续将可迭代对象中的元素传入操作后的结果将充当一个参数,从可迭代对象中再选出一个参数一起发起一次新的调用。
# 效果便是:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
from functools import reduce
reduceString = reduce(lambda x,y:x + y,mapString)
print(reduceString)
3.filter
内嵌函数filter同样是传入一个函数和一个可迭代对象,filter函数将把传入的函数依次作用于每一个元素产生True或False的返回值在决定是否保留该元素,生成一个迭代器。
print(list(filter(lambda x:x % 2 == 1,[1,2,3,4,5,6,7,8])))
结果是:
[1, 3, 5, 7]
4.sorted
sorted函数接收可迭代对象按照每个元素在字符集中的位置进行排序,可以通过制定key相关函数对所有元素进行初级操作,再将操作后的结果进行排序,按照顺序给对应原始数据进行编排。
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_name(t):
return t[:][1]
print(by_name(L))
L2 = sorted(L, key=by_name,reverse=True)
print(L2)
sorted(L)
sorted([36, 5, -12, 9, -21], key=abs)
# 若希望进行反向排序可以用设定第三个参数reverse=True(默认False)
结果是:
>('Adam', 92)
>[('Adam', 92), ('Lisa', 88), ('Bob', 75), ('Bart', 66)]
>[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]
>[5, 9, -12, -21, 36]
网友评论