zoukankan      html  css  js  c++  java
  • Python基础---匿名函数

    1  为什么要有lambda函数

      在Python语言中除了def语句用来定义函数之外,还可以使用匿名函数lambda,它是Python一种生成函数对象的表达式形式。匿名函数通常是创建了可以被调用的函数,它返回了函数,而并没有将这个函数命名。lambda有时被叫做匿名函数也就是这个原因,需要一个函数,又不想动脑筋去想名字,这就是匿名函数。

      语法:

        lambda函数的语法只包含一个语句:   lambda arg1,arg2,.....argn:expression

        lambda 可以无参数,也可以多参数,但是语句只有一个

    2  使用场景

      列表的排列函数中:

    list_1 = [{"name":"wang","age":10},{"name":"xiaoming","age":20},{"name":"banzhang","age":10}]
    infors.sort(key=lambda x:x['age']) #根据age对字典排序
    print(infors)
    
    输出:
    [{'name': 'wang', 'age': 10}, {'name': 'banzhang', 'age': 10}, {'name': 'xiaoming', 'age': 20}]

    list_2=['hjkgfdk','sdfrgr','gregth','rewfrwrg','htht','qwqw']
    list_2.sort(key=lambda x:x[2])
    print(list_2)

    输出
    ['gregth', 'sdfrgr', 'htht', 'hjkgfdk', 'qwqw', 'rewfrwrg']

        用在过滤函数中,指定过滤列表元素的条件:

    filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    输出 
    > [3, 6, 9]

      reduce()函数,在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 fucntools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数: from functools import reduce

    >>>def add(x, y) :            # 两数相加
    ...     return x + y
    ... 
    >>> reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5
    15
    >>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
    15

       用在map()函数中

    map(lambda x: x+1, [1, 2,3])
    > [2, 3, 4]

      

      作为一个函数的参数

    
    
    def transform(fun,*arg):
    return fun(*arg)
    print(transform(lambda x,y:x*y,1,8))
    输出: 
    8

       返回一个三元表达式:

     

     

  • 相关阅读:
    ubuntu 14.04 LTS 163更新源
    Windows 2008R2 修改SID
    ubuntu14 使用rsync远程备份文件
    vim常用
    Ubuntu创建lvm
    Windows 迁移本地用户配置文件到域用户
    Linux scp使用
    Centos 7 修改网卡名称、静态IP
    Axel多线程工具安装
    testlink 1.9.19安装
  • 原文地址:https://www.cnblogs.com/yuanji2018/p/9792504.html
Copyright © 2011-2022 走看看