• 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")
    

      

    断言???

  • 相关阅读:
    PHP应用目录结构设计
    php 项目性能优化
    Zend Framework的PHP编码规范【1】
    php 如何做在线人数统计
    linux 文件权限
    总结:常用的通用数据处理指令
    全排列(含递归和非递归的解法)
    局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别(转)
    C++中引用详解
    Pascal三角形
  • 原文地址:https://www.cnblogs.com/xiao--yao/p/5024542.html
Copyright © 2020-2023  润新知