欢迎访问宙启技术站
智能推送

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函数不能包含复杂语句,也不能给变量赋值,所以在编写较为复杂的函数时还是应该使用普通函数。