高阶函数的使用
定义
定义一个函数,其参数是另一个函数的内存地址的函数,称为高阶函数。
应用
1.map函数
有一个列表[1,3,4,5,6],我们想要将其中每一个元素带入函数f,求得一个结果,此时我们可以用map函数,将函数f、列表[1,3,4,5,6]作为参数传入,将得到一个生成器(Python3)
ls=[1,3,4,5,6]#定义列表
def f(a):
return a*a #计算传入值的平方
result=map(f,ls)#将函数f和列表ls带入map函数
#输出result里的每一个结果
print(next(result))
print(next(result))
print(next(result))
print(next(result))
print(next(result))
1
9
16
25
36
Process finished with exit code 0
2.reduce函数
有一个列表[1,3,4,5,6],我们想要将前两个元素带入函数f,求得一个结果,再将结果作为参数和第三个元素一起带入函数f……以此类推,直至将列表循环完,得到最终结果。
from functools import reduce#导入reduce函数
ar=[1,3,4,5,6]#定义列表
def f(x,y):#定义函数,需出入两个参数
return x+y
result=reduce(f,ar)#将函数f、数组ar作为参数传入reduce
print(result)#打印计算结果
结果为;
19
Process finished with exit code 0
3.filter函数
有一个列表['s','d','',None,'a'],我们想要将其中的‘’和None过滤掉。此时我们需要定义一个过滤函数,将过滤函数和列表一同传入filter函数,filter函数就会把列表里的每个元素作为参数传入过滤函数,根据其返回值(布尔类型)判断是否保留该元素,最终返回一个迭代器。
ar=['s','d','',None,'a']#定义列表
def not_empty(a):#定义过滤函数
return a and a.strip()
result=filter(not_empty,ar)#将列表和过滤函数一同带入filter函数
#打印结果
print(next(result))
print(next(result))
结果为:
s
d
Process finished with exit code 0
4.sorted
除了能给数字排序,也能给字符串排序
reult=sorted(['a', 'f', 'd', 'e'], key=str.lower,reverse=True)
print(reult)
结果为:
['f', 'e', 'd', 'a']
Process finished with exit code 0还没有评论,来说两句吧
