python之lambda使用

1、lambda初体验

lambda其实是一个匿名函数,其使用的语法形式为 lambda 参数列表:表达式(返回值),其主要作用是减少代码量。

func1=lambda a,b:a*b
print(func1)    #<function <lambda> at 0x000001BA03FF5598>  可以看出匿名函数
print(func1(10,10))    #100

# 直接调用
print((lambda x: 'big' if x > 100 else 'small')(10)) # small

2、lambda的参数形式

其实可以想到lambda作为一个匿名函数,其参数的形式应该和正常的函数没有什么两样。如下:

func1=lambda :100   #无参数形式
print(func1())  #100

func2=lambda a,b:a**b  #一般参数形式
print(func2(2,3))  #8

func3=lambda a,b,c=100:a**b+c   #默认参数形式
print(func3(2,3))   #108

func4=lambda *args:args   #可变参数
print(func4(100,'abc','009'))   #(100, 'abc', '009')

func5=lambda **kwargs:kwargs   #可变参数
print(func5(name='tom',age=18))  #{'name': 'tom', 'age': 18}

3、lambda的应用

带判断表达式的lambda:

func=lambda a,b:(a+b) if a>b else (a-b)
print(func(2,3))  #-1
  • 在列表排序方法sort的参数中直接调用lambda可以极大的减少代码量:
student=[{'name':'Tom','age':18,'class':'001'},
      {'name':'Jack','age':20,'class':'003'},
      {'name':'Lucy','age':24,'class':'009'}]
key=lambda x:x['name']
print(key(student[1]))  #Jack这里只是为了看清楚下面sort的参数是什么

student.sort(key=lambda x:x['name'])  #这里x指代的就是student列表中的每一项,返回值是每一项字典中的name
print(student)
#[{'name': 'Jack', 'age': 20, 'class': '003'}, {'name': 'Lucy', 'age': 24, 'class': '009'}, {'name': 'Tom', 'age': 18, 'class': '001'}]

student.sort(key=lambda x:x['name'],reverse=True)
print(student)
#[{'name': 'Tom', 'age': 18, 'class': '001'}, {'name': 'Lucy', 'age': 24, 'class': '009'}, {'name': 'Jack', 'age': 20, 'class': '003'}]

student.sort(key=lambda x:x['age'])
print(student)
#[{'name': 'Tom', 'age': 18, 'class': '001'}, {'name': 'Jack', 'age': 20, 'class': '003'}, {'name': 'Lucy', 'age': 24, 'class': '009'}]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值