Python学习笔记(十三):Lambda表达式

应⽤场景

如果⼀个函数有⼀个返回值,并且只有⼀句代码,可以使⽤ lambda简化。

lambda语法

lambda 参数:返回值

lambda其实是一个匿名函数,没有具体名字,可以用一个函数名对它进行接收,如果直接打印函数名,返回的是函数的地址。

f=lambda x : 2*x
print(f)
print(f(3))
<function <lambda> at 0x000001AA83321F28>
6

lambda的参数形式

⽆参数

fn1 = lambda: 100
print(fn1())
100

⼀个参数

fn1 = lambda a: a
print(fn1('hello world'))
hello world

默认参数

fn1 = lambda a, b, c=100: a + b + c
print(fn1(10, 20))
130

可变参数:*args

fn1 = lambda **kwargs: kwargs
print(fn1(name='python', age=20))
(10, 20, 30)

这⾥的可变参数传⼊到lambda之后,返回值为元组。

可变参数:**kwargs

fn1 = lambda **kwargs: kwargs
print(fn1(name='python', age=20))
{'name': 'python', 'age': 20}

列表数据按字典key的值排序

有时候我们需要按列表中元素的某个维度对列表进行排序,此时就可以使用到lambda表达式。下面的列表中每个元素都是一个字典,我们希望按字典中的name对列表进行排序。

不使用lamba表示的形式

students=[
    {"name":"Bob","age":2},
    {"name":"Jason","age":3},
    {"name":"Taylor","age":54},
    {"name":"Smith","age":8},
]

def findName(x):
    return x["name"]

students.sort(key=findName)
print(students)
students.sort(key=findName,reverse=True)
print(students)
[{'name': 'Bob', 'age': 2}, {'name': 'Jason', 'age': 3}, {'name': 'Smith', 'age': 8}, {'name': 'Taylor', 'age': 54}]
[{'name': 'Taylor', 'age': 54}, {'name': 'Smith', 'age': 8}, {'name': 'Jason', 'age': 3}, {'name': 'Bob', 'age': 2}]

使用lamba表示的形式

students=[
    {"name":"Bob","age":2},
    {"name":"Jason","age":3},
    {"name":"Taylor","age":54},
    {"name":"Smith","age":8},
]

students.sort(key=lambda x:x["name"])
print(students)
students.sort(key=lambda x:x["name"],reverse=True)
print(students)
[{'name': 'Bob', 'age': 2}, {'name': 'Jason', 'age': 3}, {'name': 'Smith', 'age': 8}, {'name': 'Taylor', 'age': 54}]
[{'name': 'Taylor', 'age': 54}, {'name': 'Smith', 'age': 8}, {'name': 'Jason', 'age': 3}, {'name': 'Bob', 'age': 2}]
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值