• python之Lambda函数---笔记


    《Python3 程序开发指南》

    Lambda函数,是一个匿名函数,创建语法:

     lambda parameters:express

    parameters:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数。

    expression:不能包含分支或循环(但允许条件表达式),也不能包含return(或yield)函数。如果为元组,则应用圆括号将其包含起来。

    调用lambda函数,返回的结果是对表达式计算产生的结果

    根据参数是否为1 决定s为yes还是no
    >>> s = lambda x:"yes" if x==1 else "no"
    >>> s(0)
    'no'
    >>> s(1)
    'yes'
    

      上面例子中,将if...else语句缩减为单一的条件表达式,语法为:

                   expression1 if A else expression2

    如果A为True,条件表达式的结果为expression1,否则为expression2 

     以下举例说明lambda函数的使用

    使用sorted()方法和list.sort()方法进行排序
    elements=[(2,12,"A"),(1,11,"N"),(1,3,"L"),(2,4,"B")]
    >>> sorted(elements)
    [(1, 3, 'L'), (1, 11, 'N'), (2, 4, 'B'), (2, 12, 'A')]
    
    根据elements每个元组后两项进行排序,e表示列表中每个三元组元素
    在表达式是元组,且lambda为一个函数的参数时,lambda表达式的圆括号是必需的
    >>> elements.sort(key=lambda e:(e[1],e[2]))
    >>> elements
    [(1, 3, 'L'), (2, 4, 'B'), (1, 11, 'N'), (2, 12, 'A')]
    
    分片方式得到同样的效果
    >>> elements.sort(key=lambda e:e[1:3])
    >>> elements
    [(1, 3, 'L'), (2, 4, 'B'), (1, 11, 'N'), (2, 12, 'A')]
    
    >>> elements.sort(key=lambda e:(e[2].lower(),e[1]))
    以下两种方法等价,都可以通过调用area(5,3),结果相同
    >>> area=lambda b,h:0.5*b*h
    >>> def area(b,h):
    	return 0.5*b*h
    
    默认字典使用,存取不不在的键时,创建一个新项,键为这个不存在的键,值为lambda函数的值
    >>> import collections
    >>> one_dict = collections.defaultdict(lambda:-1)
    >>> two_dict = collections.defaultdict(lambda:(0,0))
    >>> three_dict = collections.defaultdict(lambda:"No message avaliable")
    

      

    断言???

  • 相关阅读:
    9.1做JS的题目(2)
    9.1做JS的题目
    8.31做JS的题目
    8.30做JS的题目
    扫码跳转微信小程序(服务端微信API生成二维码)
    扫码跳转微信小程序(微信公众平台配置测试二维码)
    项目配置:maven下载与配置、tomcat下载与配置
    Java基础:常用工具_API
    Java基础: 抽象类、接口、final关键字、static关键字
    java基础: 封装、继承、多态
  • 原文地址:https://www.cnblogs.com/xiao--yao/p/5024542.html
Copyright © 2020-2023  润新知