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

 

转载于:https://www.cnblogs.com/xuchunlin/p/6045285.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值