zoukankan      html  css  js  c++  java
  • python之lambda函数

     lambda函数又称为匿名函数,匿名函数就是没有函数名的函数。

    1
    2
    >>> lambda x,y:x+y
    <function <lambda> at 0x7f0f0dd85578>

      x,y是函数的两个变量,位于冒号的左边,冒号右边的表达式是函数的返回值。

    1
    2
    3
    4
    5
    >>> add =lambda x,y:x+y
    >>> add
    <function <lambda> at 0x7f0f0dd855f0>
    >>> add(1,2)
    3

      等同于函数

    1
    2
    3
    def add(x,y):
        return x+y
    add(1,2)

      lambda的使用场景

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    1.函数式编程
    #例如:一个整数列表,要求按照列表中元素的绝对值大小升序排列
    list1 = [3,5,-4,-1,0,-2,-6]
    print(sorted(list1,key=abs))
    print(sorted(list1,key=lambda x:abs(x)))
     
    2.python中最常见的filter筛选、map小刷子、reduce合并,都可以用lambda表达式来生成。对于序列来讲,有三个函数式编程工具:filter()、map()、reduce()
    map(function,sequence):把sequence中的值当参数逐个传给function,返回一个包含函数执行结果的list。如果function有两个参数,即map(function,sequence1,sequence2)。
    #求1~20的平方
    print(list(map(lambda x:x**2,range(1,21))))
    #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]
     
    filter(function,sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回。
    #求1~20之间的偶数
    print(list(filter(lambda x:x%2 == 0,range(1,21))))
    #[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
     
    reduce(function,sequence):function接收的参数个数只能为2,先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给function,然后只返回一个结果。
    #求1~100之和
    from functools import reduce
    print(reduce(lambda x,y:x+y,range(1,101)))
    #5050
     
    #求1~100之和,再加上10000
    from functools import reduce
    print(reduce(lambda x,y:x+y,range(101),10000))
    #15050
     
    3.闭包
    一个定义在函数内部的函数,内部函数使用了外部函数的临时变量,并且外部函数的返回值是内部函数的引用。
     
    def outer(a):
        b=10
            def inner(): # 内部函数
                print(a+b)
            return inner # 外函数的返回值是内函数的引用
    outer(5)
  • 相关阅读:
    哈夫曼树
    MUI
    mui.init方法配置
    js中如何把字符串转化为对象、数组示例代码
    ( 转 )超级惊艳 10款HTML5动画特效推荐
    ( 转 ) 关于微信公众号,你不知道的15个小技巧
    h5预加载代码
    css3常用动画样式文件move.css
    iphone微信 h5页音乐自动播放
    sshpass: 用于非交互的ssh 密码验证
  • 原文地址:https://www.cnblogs.com/valorchang/p/11282092.html
Copyright © 2011-2022 走看看