应⽤场景
如果⼀个函数有⼀个返回值,并且只有⼀句代码,可以使⽤ 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}]
本文详细介绍了Python中的lambda函数,包括其语法、参数形式、默认参数和可变参数的使用。通过实例展示了如何利用lambda进行匿名函数的定义以及在列表排序中的应用。同时,对比了使用普通函数和lambda函数进行列表排序的方法。
2573

被折叠的 条评论
为什么被折叠?



