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

Pythonlambda函数:了解lambda表达式的语法和应用场景

发布时间:2023-06-23 19:44:02

Python中的lambda函数是一种匿名函数,也可以称为函数表达式。它是一个可以被传递、赋值、或作为返回值的函数对象,具有简洁、优雅的语法,常用于一些函数式编程的场景中。

lambda表达式的语法如下:

lambda arguments: expression

其中,arguments是参数列表,用逗号分隔;expression是一个表达式,不用显式地写return关键字。

与普通函数不同的是,lambda函数没有函数名,只能存在于表达式部分,不能用于语句中,也不能在函数中定义嵌套函数。

lambda函数的应用场景:

1. 排序

在排序时,我们可以使用sort()函数或sorted()函数进行排序,其中的key参数可以指定一个函数,将其作用于每个元素,并根据函数的返回值进行排序。这时,我们可以使用lambda函数来自定义一个小函数来完成这个工作。

例如,按照元素长度排序:

lst = ['aa', 'bbb', 'c']
lst.sort(key=lambda x: len(x))
print(lst)

输出:['c', 'aa', 'bbb']

2. 过滤

在对列表或迭代器进行过滤时,可以使用filter()函数,其中的 个参数指定一个返回TrueFalse的函数,将其作用于每个元素,filter()函数将只保留返回True的元素。这时,我们同样可以使用lambda函数来定义一个小函数。

例如,过滤出长度大于等于2的元素:

lst = ['a', 'ab', 'b', 'bc']
lst_filtered = list(filter(lambda x: len(x) >= 2, lst))
print(lst_filtered)

输出:['ab', 'bc']

3. 映射

在对列表或迭代器进行映射时,可以使用map()函数,其中的 个参数指定一个将会作用于每个元素的函数,map()函数将返回一个新的迭代器,其中的每个元素都是这个函数作用于原迭代器中相应元素的返回值。同样,我们可以使用lambda函数来定义一个小函数。

例如,将字符串都变成大写:

lst = ['a', 'b', 'c']
lst_upper = list(map(lambda x: x.upper(), lst))
print(lst_upper)

输出:['A', 'B', 'C']

4. reduce

reduce函数可以对一个序列进行累积操作,返回一个最终结果。函数需要两个参数, 个参数是一个函数,第二个参数是一个序列。在对序列中的元素进行累积时,函数将把前一次的计算结果继续参与计算。同样,我们可以使用lambda函数来定义一个小函数。

例如,计算1至10的和:

from functools import reduce
sum = reduce(lambda x, y: x + y, range(1, 11))
print(sum)

输出:55

总结:

lambda函数是一种方便简洁的函数表达式,常用于函数式编程的一些场景,比如排序、过滤、映射、累积等。虽然语法和普通函数略有不同,但仍然是Python中十分常见的函数表达方式。