在Python中,map()
, filter()
和 reduce()
是函数式编程中的三个核心高阶函数。它们允许你通过将一个函数应用到可迭代对象(如列表、元组或字典)上的每个元素来处理数据。
- map():
- 作用:对一个序列的每个元素应用指定的函数,并返回一个新的包含结果的序列。
- 语法:
map(function, iterable[, ...])
- 示例:
def square(x):
return x ** 2
numbers = [1, 2, 3, 4, 5]
squares = map(square, numbers)
print(list(squares)) # 输出:[1, 4, 9, 16, 25]
在这个例子中,我们定义了一个名为square
的函数,然后使用map()
将其应用于numbers
列表的每个元素上。最后,我们将结果转换为列表并打印出来。
- filter():
- 作用:根据指定的条件过滤序列中的元素,并返回满足该条件的新序列。
- 语法:
filter(function, iterable)
- 示例:
def is_even(x):
return x % 2 == 0
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(is_even, numbers)
print(list(even_numbers)) # 输出:[2, 4, 6]
在这个例子中,我们定义了一个名为is_even
的函数,用于检查一个数字是否是偶数。然后我们使用filter()
将这个函数应用于numbers
列表的每个元素上,只保留偶数。最后,我们将结果转换为列表并打印出来。
- reduce():
- 作用:对序列中的所有元素进行累积操作,返回单个结果。
- 语法:
reduce(function, iterable[, initializer])
- 示例:
from functools import reduce # 在Python 3中需要导入functools模块
def add(x, y):
return x + y
numbers = [1, 2, 3, 4, 5]
sum_of_numbers = reduce(add, numbers)
print(sum_of_numbers) # 输出:15
在这个例子中,我们定义了一个名为add
的函数,用于加法运算。然后我们使用reduce()
将这个函数应用于numbers
列表的所有元素上,计算它们的总和。最后,我们将结果打印出来。
请注意,从Python 3开始,reduce()
函数被移到了functools
模块中,所以你需要先导入它才能使用。