zoukankan      html  css  js  c++  java
  • 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")
    

      

    断言???

  • 相关阅读:
    python class 的属性
    程序员7年和我的7点感想――我的程序人生
    LCD 调试总结 [转]
    shell sed 替换某行内容
    msm 模拟i2c使用过程分析
    高通平台USB host协议分析 之 一
    Linux文件查找命令find,xargs详述
    (翻译)Android属性系统
    内存对齐.结构体对齐
    python class 用法
  • 原文地址:https://www.cnblogs.com/xiao--yao/p/5024542.html
Copyright © 2011-2022 走看看