Python内置函数:map()、filter()和reduce()详解
Python内置函数map()、filter()和reduce()是编程中常用的三个高阶函数。它们可以有效地处理序列(列表、元组等)或可迭代对象(如range()函数返回的对象)中的元素,将一个或多个函数应用于序列中的每个元素,并在返回结果时对其进行处理。
map(function, iterable)
map()函数将一个函数应用于一个或多个可迭代对象(包括序列、元组、集合等),并返回一个迭代器,该迭代器为一个列表,其中包括在应用函数之后得到的所有结果。
例如,我们可以使用map()函数将一个序列中的每个元素都平方,并返回一个新的结果序列:
seq = [1, 2, 3, 4, 5] result = map(lambda x: x ** 2, seq) print(list(result))
输出结果为:
[1, 4, 9, 16, 25]
上述代码中,我们将序列seq中的每个元素应用于lambda函数,并将结果储存在迭代器中,然后使用list()函数将迭代器转换为列表。
filter(function, iterable)
filter()函数根据给定的函数从序列中过滤元素,并返回一个迭代器,包括那些被函数调用返回True的元素。
例如,我们可以使用filter()函数从一个序列中删除所有偶数元素,然后返回一个新的序列:
seq = [1, 2, 3, 4, 5] result = filter(lambda x: x % 2 != 0, seq) print(list(result))
输出结果为:
[1, 3, 5]
上述代码中,我们使用lambda函数检查序列元素是否为奇数,并将结果储存在迭代器中,然后使用list()函数将迭代器转换为列表。
reduce(function, iterable[, initializer])
reduce()函数从左到右以一个二元函数的方式对序列元素进行累积,返回一个仅包含一个值的新序列。它首先将函数对序列的前两个元素进行操作,然后应用到结果和下一个元素上,直到序列的所有元素都被遍历。
例如,我们可以使用reduce()函数计算一个序列的乘积:
import functools seq = [1, 2, 3, 4, 5] result = functools.reduce(lambda x, y: x * y, seq) print(result)
输出结果为:
120
上述代码中,我们使用lambda函数将序列中的元素逐个相乘,并将结果储存在变量result中。
最后,需要注意的是,如果在使用map()、filter()或reduce()函数时发现没有输出结果,请确保将结果储存在一个列表、元组或集合等可迭代对象中。否则,map()、filter()或reduce()函数将返回一个迭代器,而不是直接打印结果。
