高阶函数的使用

2019-05-12 20:27:54阅读 25评论 0

定义

定义一个函数,其参数是另一个函数的内存地址的函数,称为高阶函数。

应用

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

还没有评论,来说两句吧