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") 
    
  • 相关阅读:
    商贸通帐套隐藏方法
    固定资产打开提示:上年度数据未结转!
    ZOJ 2432 Greatest Common Increasing Subsequence
    POJ 1080 Human Gene Functions
    POJ 1088 滑雪
    POJ 1141 Brackets Sequence
    POJ 1050 To the Max
    HDOJ 1029 Ignatius and the Princess IV
    POJ 2247 Humble Numbers
    HDOJ 1181 变形课
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/6045285.html
Copyright © 2011-2022 走看看