Python中的匿名函数(lambda函数)及其用法
发布时间:2023-12-03 21:51:58
匿名函数(lambda函数)是Python中一种特殊的函数,它没有函数名,也没有使用def关键字来定义。相对于普通函数,lambda函数通常只包含一个表达式。
lambda函数的语法格式如下:
lambda 参数列表:表达式
其中,参数列表包含了lambda函数的参数,可以是0个、1个或多个参数,多个参数之间使用逗号分隔。表达式是lambda函数要执行的操作。
下面是一些使用lambda函数的例子:
1. 计算两个数的和
sum = lambda x, y: x + y print(sum(5, 3)) # 输出 8
2. 判断一个数是否是偶数
is_even = lambda x: x % 2 == 0 print(is_even(10)) # 输出 True print(is_even(7)) # 输出 False
3. 对列表进行排序
fruits = ["apple", "banana", "cherry", "date"] fruits.sort(key=lambda x: len(x)) print(fruits) # 输出 ["date", "apple", "banana", "cherry"]
4. 将一个数乘以2
double = lambda x: x * 2 print(double(5)) # 输出 10
lambda函数通常与内置函数结合使用,比较常见的是与map、filter和reduce函数结合使用。
- map(function, iterable):对可迭代对象的每个元素应用函数,并返回一个迭代器。
numbers = [1, 2, 3, 4, 5] squared = list(map(lambda x: x**2, numbers)) print(squared) # 输出 [1, 4, 9, 16, 25]
- filter(function, iterable):对可迭代对象的每个元素应用函数,并返回满足函数条件的元素组成的迭代器。
numbers = [1, 2, 3, 4, 5] even = list(filter(lambda x: x % 2 == 0, numbers)) print(even) # 输出 [2, 4]
- reduce(function, iterable):对可迭代对象的元素应用函数,将函数的结果与下一个元素继续应用函数,直到只剩下一个值。需要从functools模块中导入。
from functools import reduce numbers = [1, 2, 3, 4, 5] sum = reduce(lambda x, y: x + y, numbers) print(sum) # 输出 15
虽然lambda函数在一些简单情况下可以提供简洁的代码,但当函数逻辑较为复杂时,仍建议使用普通的函数定义方式,以提高代码的可读性和维护性。
