什么是 lambda
函数?
简单来说,lambda
函数是一个小型匿名函数,这意味着它是没有名称的。lambda
函数可以接受任意数量的参数;然而,它只能有一个表达式。
lambda
函数通常用于其他函数内部,如 map()
、filter()
或 sort()
。它不需要被赋值给一个变量,因此它的行为类似于使用 def
定义的函数。需要注意的是,它并不替代 def
,因为 lambda
函数仅限于一个表达式。
我们如何使用 lambda
函数?
语法:
关键点:
lambda
是用于定义函数的关键字。- 它可以接受任意数量的参数。
- 不需要返回语句,因为它会自动计算并返回表达式的值。
- 通常用于简单函数。
- 它就像一个“临时”函数。如果编写完整函数没有必要,而你只需要它暂时使用,可以尝试使用
lambda
函数!
示例:
如果你想用常规函数对一个数字进行平方运算,你会写类似这样的代码:
lambda
函数的等价形式是:
lambda
函数有什么用?
lambda
函数在作为另一个函数内部使用时展现出它的实用性。
如果您有一个函数定义,它接受一个参数,并且该参数与一个未知的数字相乘,那么它的形式大致如下:
现在,您可以使用这个函数定义来创建一个总是将您输入的数字加倍或加三倍的函数:
使用 lambda
函数与 filter()
、map()
和 sort()
filter()
– 用于从一组数据中筛选特定值。
filter(function, iterable)
只保留函数返回 True 的元素。lambda x: x % 2 == 0
检查数字是否为偶数,逐个进行检查。filter()
将 lambda
应用到 numbers
的每个元素(整数列表 [1-10]),并仅保留返回 True 的元素(即偶数)。filter()
返回一个迭代器,因此我们将其包装在 list()
中以查看过滤后的结果。
map()
– 将函数应用于每个元素。
map(function, iterable)
将函数应用于 numbers
列表的每个元素。lambda x: x * 2
将列表中的每个数字翻倍。
sort()
与 key
– 自定义的排序逻辑。
sort(key=function)
根据函数的返回值决定元素的排序方式。lambda x: len(x)
根据长度对每种水果进行排序,而不是按字母顺序排序。
lambda
函数的使用案例
在现实世界中,您可能会使用 lambda
来过滤列表中的电子邮件,例如,如果您只想查找 @gmail.com
地址,您将能够保留 @gmail.com
地址。
您可以在遍历列表时使用 lambda
来计算商品价格加税。这样,lambda
将会将每个价格乘以一个税率。
最后,您可以使用 lambda
函数按年龄对人进行排序,这样返回的将是每个人的年龄,而 sort()
将会从最年轻到最年长进行组织。
您将如何尝试使用 lambda
函数?