Python中Lambda函数的使用方法及示例
发布时间:2023-06-02 03:30:50
Lambda函数是Python中的一种匿名函数,它可以用来创建一个简单的函数,通常用于需要编写简短、执行一次的函数时使用。Lambda函数和普通函数最大的不同点是语法的简化,它不能包含赋值语句、循环语句和异常处理语句,只能包含一个表达式。
Lambda函数的语法格式如下:
lambda arguments: expression
arguments是函数的参数,多个参数之间用逗号分隔。expression是函数的返回值,表达式的执行结果就是函数的返回值。
Lambda函数可以用在函数调用时作为参数,也可以用在函数内部。下面分别介绍两种用法。
1. Lambda函数作为参数
Lambda函数可以作为高阶函数的参数,高阶函数接受一个函数作为参数并且返回一个函数。在Python中,map()、filter()、reduce()等函数都接受一个函数作为参数。
map()函数将一个列表中的每个元素批量地执行一个函数,并返回一个新的列表。
# 将x列表中的每个元素加1 x = [1, 2, 3, 4] y = map(lambda a: a + 1, x) print(list(y)) # 输出 [2, 3, 4, 5]
filter()函数按照指定的规则筛选出符合条件的元素,并返回一个新的列表。
# 筛选出x列表中的所有偶数 x = [1, 2, 3, 4] y = filter(lambda a: a % 2 == 0, x) print(list(y)) # 输出 [2, 4]
reduce()函数对一个列表进行累计计算,并返回计算结果。
# 计算x列表中所有元素的和 from functools import reduce x = [1, 2, 3, 4] y = reduce(lambda a, b: a + b, x) print(y) # 输出 10
2. Lambda函数作为函数内部的局部函数
Lambda函数也可以作为函数内部的局部函数,比如用于函数内部嵌套函数。
# 计算a和b的和的平方
def add_square(a, b):
def square(x):
return x ** 2
return square(a + b) # 返回 (a + b) ** 2
print(add_square(2, 3)) # 输出 25
上面例子中,square()函数作为add_square()函数内部的局部函数,但是它只用到了一个参数。为了进一步简化代码,我们可以使用Lambda函数来代替。
# 计算a和b的和的平方
def add_square(a, b):
return (lambda x: x ** 2)(a + b) # 返回 (a + b) ** 2
print(add_square(2, 3)) # 输出 25
上面例子中,Lambda函数取代了square()函数。当Lambda函数只包含一个表达式时,可以省略掉函数名,直接写在括号里面。
Lambda函数在编写简短且只用一次的函数时十分方便,但是由于Lambda函数不能包含复杂语句,也不能给变量赋值,所以在编写较为复杂的函数时还是应该使用普通函数。
