内置函数:map、reduce、filter的用法和区别?
参考答案:
map
、reduce
和 filter
是 Python 中的三个内置函数,它们通常用于处理序列(如列表、元组等)或迭代器对象。下面是这三个函数的用法和区别:
map
函数
map
函数用于将一个函数应用于一个或多个序列的所有项目,并返回一个迭代器,其中包含应用函数后的结果。
语法:
map(function, iterable, ...)
示例:
def square(x):
return x ** 2
numbers = [1, 2, 3, 4, 5]
squared = map(square, numbers)
print(list(squared)) # 输出 [1, 4, 9, 16, 25]
filter
函数
filter
函数用于过滤序列,过滤掉不符合指定条件的元素,并返回一个迭代器,其中包含符合条件的元素。
语法:
filter(function, iterable)
示例:
def is_even(x):
return x % 2 == 0
numbers = [1, 2, 3, 4, 5]
even_numbers = filter(is_even, numbers)
print(list(even_numbers)) # 输出 [2, 4]
reduce
函数
reduce
函数用于对序列中的元素进行累积操作,即将序列中的元素依次进行某种二元操作,并返回最终的结果。
注意:在 Python 3 中,reduce
函数已经被移到 functools
模块中。
语法:
from functools import reduce
reduce(function, iterable[, initializer])
示例:
from functools import reduce
def add(x, y):
return x + y
numbers = [1, 2, 3, 4, 5]
sum_of_numbers = reduce(add, numbers)
print(sum_of_numbers) # 输出 15
区别:
map
函数将一个函数应用于序列的每个元素,并返回一个新序列。filter
函数根据指定的条件过滤序列中的元素,并返回一个新序列。reduce
函数对序列中的元素进行累积操作,并返回最终的结果。
这三个函数都是高阶函数(higher-order functions),因为它们都接受其他函数作为参数。它们都是惰性求值(lazy evaluation)的,即它们返回的都是迭代器,不会立即计算结果,而是在需要时才进行计算。