• [ Python ] 匿名函数和高阶函数


    1. 匿名函数

    lambda:一个语法,三个特性,四个用法

    语法:
     lambda argument_list: expression
    argument_list 和 expression 由用户自定义

    (1)argument_list 是参数列表。它的结构与 python 中函数的参数列表是一样的。

    	a, b
    	a=1, b=2
    	*args
    	**kwargs
    	a, b=1, *args
    	空
    	……
    

    (2)expression 是一个关于参数的表达式。表达式中出现的参数需要在 argument_list 中定义,并且表达式只能是单行的,如下:

    	1
    	None
    	a + b 
    	sum(a)
    	1 if a > 10 else 0
    

    lambda argument_list: expression 表示的是一个函数,一个匿名函数。

    三个特性:
        (1)lambda 函数是匿名的;所谓匿名函数,通俗地说就是没有名字的函数。lambda 函数没有名字;
        (2)lambda 函数有输入和输出;输入是传入到参数列表 argument_list 的值,输出是根据表达式 expression 计算得到的值;
        (3)lambda 函数一般功能简单,单行 expression 决定了 lambda 函数不可能完成复杂的逻辑,只能完成非常简单的功能

    四个用法:
        (1)将 lambda 函数赋值给一个变量,通过这个变量间接调用该 lambda 函数
        (2)将 lambda 函数作为其他函数的返回值,返回给调用者
        (3)将 lambda 函数作为参数传递给其他函数
        (4)将lambda 函数赋值给其他函数,从而将其他函数用该 lambda 函数替换

    python编程方式
        python 编程方式分为:
            (1)面向过程
            (2)函数式编程
                不用变量保存状态,不修改变量
                函数即变量
            (3)面向对象

    2. 高阶函数

        (1)函数接收参数是一个函数名
        (2)返回值中包含函数
        把函数作为参数传入,这样的函数称为高阶函数

    (1)map

    map函数接收两个参数,一个是函数,一个是 iterable。map将传入的函数依次作用到每个元素,并把结果作为新的 iterator 返回

    def f(x):
            return x * x
    
    
    m = map(f, [1, 2, 3, 4])
    # iterator 是惰性序列,因此通过 list() 函数让它把整个序列都计算出来并返回一个list
    print(list(m))
    
    # 执行结果:
    # [1, 4, 9, 16]
    

    (2)filter
    filter接收一个函数和一个序列。filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True 和 False 决定保留还是丢弃该元素。

    def is_odd(n):
            return n % 2 == 1
    
    # f = filter(is_odd, [1,2,3,4,5,6,7]) 
    # 等价于
    f = filter(lambda n: n % 2 == 1, [1,2,3,4,5,6,7])
    print(list(f))
    
    # 执行结果:
    # [1, 3, 5, 7]
    

    (3)reduce
    reduce 把一个函数作用于一个序列上,这个函数必须接收两个参数,reduce把结果继续和下一个元素做累计计算

    from functools import reduce
    def foo(x, y):
            return x + y
    
    # r = reduce(foo, [1,2,3,4])
    # 等价于:
    r = reduce(lambda x, y: x + y, [1,2,3,4])
    print(r)
    

    3. python 内置函数

      python 内置函数用法。

  • 相关阅读:
    【Codeforces 429D】 Tricky Function
    【HDU 1007】 Quoit Design
    S3C2440开发环境搭建(Ubuntu)
    ubuntu 14.04使用root登陆出现错误“Error found when loading /root/.profile”解决
    Ubuntu 14.04下NFS安装配置
    gcc及其选项详解
    class_create(),class_device_create()创建/dev/xxx 名字
    class_create(),device_create自动创建设备文件结点
    ZedGraph 总论
    ZedGraph类库之基本教程篇
  • 原文地址:https://www.cnblogs.com/hukey/p/9246517.html
Copyright © 2020-2023  润新知