1.什么是lambda表达式
lambda
是 Python 中的一个关键字,用于定义简单的匿名函数。与 def
关键字定义的标准函数不同,lambda
函数主要用于需要一个函数对象作为参数的简短操作。lambda
函数的设计哲学是简洁,因此它只能包含一条表达式,而不能是复杂的代码块。
以下是 lambda
和 def
之间的一些主要区别:
-
匿名性:
-
lambda
函数是匿名的,它们没有函数名 -
def
定义的函数有明确的名称
-
-
复杂性:
-
lambda
函数只能包含一条表达式,不能有多个语句或复杂的控制流(如循环或条件判断) -
def
定义的函数可以包含多条语句和复杂的控制流
-
-
用途:
-
lambda
通常用于需要简单函数作为参数的场合,如map()
,filter()
,sorted()
, 或作为回调函数 -
def
用于定义任何类型的函数,无论其复杂性如何
-
-
语法:
-
lambda
的语法是lambda arguments: expression
-
def
的语法是def function_name(arguments):
然后是函数体
-
例如,使用 lambda
定义一个计算两个数之和的匿名函数:
add = lambda x, y: x + y
print(add(3, 4)) # 输出 7
与使用 def
定义相同的函数:
def add_with_def(x, y):return x + yprint(add_with_def(3, 4)) # 输出 7
lambda 表达式的作用:
-
lambda
表达式提供了一种在代码中快速定义小函数的方式,而无需为其命名或定义完整的函数体。 -
它允许将函数作为其他函数的参数,或者作为数据结构(如列表或字典)中的元素进行传递。
-
由于其简洁性,
lambda
表达式特别适用于需要一行代码即可解决的简单任务。
由于 lambda
自身的限制,对于更复杂的任务,应该使用 def
来定义函数。
2.lambda表达式的使用
除上述用法外,lambda也可以定义在def函数中 。这里定义了一个action函数,返回了一个lambda表达式。其中lambda表达式获取到了上层def作用域的变量名x的值。a是action函数的返回值,a(22),即是调用了action返回的lambda表达式。
def action(x):return lambda y:x+y
a=action(6)
print(a(22))# 输出:
'''
28
'''
也可以把def直接写成lambda形式。如下:
b=lambda x:lambda y:x+y
a=b(3)
a(2)# 输出:
'''
5
'''
使用内置函数map()
进行操作如下:
# 内置函数
# 1.map
# 遍历序列,对序列中每个元素进行操作,最终获取新的序列
li=[11,22,33]
new_list=map(lambda a:a+100,li)
for i in new_list:print(i)# 输出:
'''
111
122
133
'''
使用内置函数filter()
进行操作如下:
# 2.filter
# 对序列中的元素进行筛选,最终获取符合条件的序列
li=[11,22,33]
new_list=filter(lambda arg:arg>22,li)
for i in new_list:print(i)# 输出:
'''
33
'''
以上内容总结自网络,如有帮助欢迎转发,我们下次再见!