• (三)3-4 Python的高阶函数和匿名函数


    高阶函数:把函数当成参数传递的一种函数,例如

    def add(x,y,f):
        return f(x) + f(y)
    print(add(-8,11,abs))

    运行结果:

    19

    注:
    1、 调用add函数,分别执行abs(-8)和abc(11),并分别计算他们的值
    2、最后做运算

    map()函数
    map()函数是python内置的一个高级函数,它接受一个函数f和一个list,并把list的元素以此传递给函数f,然后返回一个函数f处理完所有list元素的列表。例如

    def f2(x):
        return x*x
    l = [1,2,3,4,5]
    print(map(f2,l))

    运行结果:

    [1, 4, 9, 16, 25]

    注:1、l是一个list,把此list的元素传入函数f2,求每个元素的平方

        2、 把最终所有的计算结果合并成一个list。

    reduce()函数

    reduce()函数也是一个内置高阶函数,reduce()函数接收的参数和map()类似,一个函数f,一个list,和map()不同,reduce()传入的函数f必须接收2个参数,第一次调用是把list的前2个元素传递给f,第二次调用时,把两个list元素的计算结果当成一个参数,list的第三个元素当成第二个参数,传入f进行操作,以后一次类推,并返回最终结果。

    def f(x,y):
        return x + y
    print(reduce(f,[1,2,3,4,5],10))

    运行结果:

    25

    注:上面运行过程1+2+3+4+5 最后10是一个默认值,最终在执行一次
    传入的函数必须接受2个参数
    把可迭代对象的前两个参数作为函数的实参,传入函数f中
    把每次f运算的结果作为一个实参,可迭代对象的下一个元素作为另一个实参,传入函数f中
    一次类推,最终得到结果

    filter()函数

    filter()函数接收一个函数f和一个list,这个函数f的作用是对每个元素进行判断,返回True或False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。例:

    a = [1,2,3,4,5,6,7,8]
    def is_odd(x):
        return x%2 == 1
    print(is_odd(5))
    print(filter(is_odd,a))

    运行结果:

    True
    [1, 3, 5, 7]

    注:
    1、list的元素以此传入函数is_odd
    2、is_odd判断每个元素是否符合条件,把符合条件的留下,不符合条件的舍弃
    3、把最终所有符合条件的元素组成一个新的列表
    函数每次把可迭代对象的元素传入进去,如果返回为true,则保留该元素,如果返回为false则不保留该元素

     sorted()函数 

    sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
    对字典排序
    按照value进行排序
    dic = dict(a=1,b=10,c=3,d=9)
    dic = dict(a=1,b=10,c=3,d=9)
    print(sorted(dic.iteritems(),key=lambda d:d[1],reverse=False))
    结果:[('a', 1), ('c', 3), ('d', 9), ('b', 10)]

    匿名函数:没有名字的函数

    lambda()函数是一种快速定义单行的最小函数,可用在任何需要函数的地方
    普通函数:

    def fun(x,y):
        return x*y
    lambda函数:
    r = lambda x,y:x*y
    print(r(2,3))
    print(type(r))

    运行结果:

    6
    <type 'function'>
  • 相关阅读:
    Spring Boot 配置文件和命令行配置
    Spring Boot RestApi 测试教程 Mock 的使用
    Spring Boot 集成 Swagger2 教程
    Spring Boot Web 开发@Controller @RestController 使用教程
    SpringBoot RESTful API 架构风格实践
    Spring Boot 使用 Aop 实现日志全局拦截
    Spring Boot 全局异常处理
    Spring Boot Thymeleaf 模板引擎的使用
    Spring Boot Log 日志使用教程
    IDEA 下的 github 创建提交与修改
  • 原文地址:https://www.cnblogs.com/pythonlx/p/7775148.html
Copyright © 2020-2023  润新知