📜  Python lambda (匿名函数) | filter, map, reduce(1)

📅  最后修改于: 2023-12-03 15:18:56.298000             🧑  作者: Mango

Python lambda (匿名函数) | filter, map, reduce

在Python中,lambda函数也称为匿名函数,由于它们是没有名称的,因此可以在不创建正式函数的情况下定义它们。它们通常在需要一个简单函数的场合下使用。

lambda函数的语法

lambda函数的语法非常简单,以下是一个lambda函数的通用形式:

lambda arguments: expression
# 示例
x = lambda a : a + 10
print(x(5))  # 输出 15

其中,arguments是函数的参数,expression是函数的返回值。

filter函数

filter()函数用于过滤序列中的元素,返回一个由符合条件的元素组成的新序列。它接受两个参数:一个是函数,一个是序列。函数返回值应该为True或False,filter()会根据函数的返回值来决定是否保留元素。

# 示例
even_numbers = list(filter(lambda x: x % 2 == 0, range(10)))
print(even_numbers)  # 输出 [0, 2, 4, 6, 8]

在上述例子中,lambda x: x % 2 == 0定义了一个匿名函数用于过滤出序列中的偶数。

map函数

map()函数用于对序列中的每一个元素进行操作,并返回操作后的结果。它接受两个参数:一个是函数,一个是序列。该函数用于对序列中的每个元素进行操作。

# 示例
squares = list(map(lambda x: x ** 2, range(5)))
print(squares)  # 输出 [0, 1, 4, 9, 16]

在上述例子中,lambda x: x ** 2定义了一个匿名函数,用于计算每个元素的平方。

reduce函数

reduce()函数用于对序列中的元素进行累积操作。它接受两个参数:一个是函数,一个是序列。该函数用于将序列中的元素累积起来。

# 需要从functools库中导入reduce函数
from functools import reduce

# 示例
product = reduce(lambda x, y: x * y, [1, 2, 3, 4])
print(product)  # 输出 24

在上述例子中,lambda x, y: x * y定义了一个匿名函数用于将序列中的元素相乘。reduce()函数将该函数应用于序列中的每个元素,得到最后的结果。

总结

lambda函数适用于简单函数的场合,特别是在需要一个函数作为参数的函数中使用。

filter()函数用于过滤序列中的元素。map()函数用于对序列中的每一个元素进行操作。reduce()函数用于对序列中的元素进行累积操作。这三个函数都接受一个函数和一个序列作为参数,并返回操作后的结果。

以上就是关于Python lambda函数以及filter()、map()、reduce()函数的介绍,希望对大家有所帮助。