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

本文详细介绍了Python中的lambda函数,包括其语法、参数形式、默认参数和可变参数的使用。通过实例展示了如何利用lambda进行匿名函数的定义以及在列表排序中的应用。同时,对比了使用普通函数和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}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值