zoukankan      html  css  js  c++  java
  • python lambda函数详细解析(面试经常遇到)

    1 作用:通常是用来在python中创建匿名函数的

    2 格式: lambda 参数[,参数] : 表达式

    3 注意:

        (1)lambda定义的是单行函数, 如果需要复杂的函数,应该定义普通函数

        (2)lambda参数列表可以包含多个参数,例如 lambda x,y : x + y

        (3)lambda中的表达式不能含有命令, 而且只限一条表达式

    4、lambda函数基础:

    lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的。如下:

      """命名的foo函数"""
      def foo():return 'beginman'  #Python中单行参数可以和标题写在一行
    
      """lambda关键字创建匿名函数,该表达式同以上函数"""
      lambda:'beginman'   

      上面的只是简单的用lambda创建一个函数对象,并没有保存它也没有调用它,时刻会被回收了。这里我们保存并调用:

      bar = lambda:'beginman'
      print bar()      #beginman
    

      从上面几个例子中,可易理解Python lambda语法:

      lambda [arg1[,arg2,arg3....argN]]:expression

      lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象。

      print lambda:'beginman'   #<function <lambda> at 0x00B00A30>
    

    无参数:

       如果没有参数,则lambda冒号前面就没有,如以上例子。

    有参数:

      def add(x,y):return x+y
      add2 = lambda x,y:x+y
      print add2(1,2)     #3
      
      def sum(x,y=10):return x+y
      sum2 = lambda x,y=10:x+y
      print sum2(1)       #11
      print sum2(1,100)   #101
    

     lambda函数的使用举例说明

    根据参数是否为1 决定s为yes还是no 
    >>> s = lambda x:"yes" if x==1 else "no"
    >>> s(0) 
    'no'
    >>> s(1) 
    'yes' 
    
    
    使用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") 
    
  • 相关阅读:
    从MSFT Project中同步数据到PSA
    TracingService. 码农debug的救星
    Business Workflow Flow 最后一个stage阶段触发Exist
    BPF form 中的readonly 只读字段自动unblock
    Windows Server 使用fiddler中抓取IIS的请求
    Dynamics 365 CE 的快捷键 Shortcut
    Dynamics 365 online 服务器保护机制 server limitation
    在后端C#中 call web api 关联lookup 和 GUID
    PSA 需要 Sales Order中 读取的最低权限 read minimal privilege
    python学习笔记10:分析程序性能cProfile
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/6045285.html
Copyright © 2011-2022 走看看