Python高级函数——map、reduce和filter
Python高级函数是一些内置函数,它们具有在函数式编程中很重要的作用。其中最常用的就是map、reduce和filter函数。下面我们详细介绍这三个函数。
一、map函数
map函数是 Python 语言中的一种高阶函数,它接收一个函数和一个迭代器作为参数,返回一个新的迭代器,其中每个元素是在原始序列上应用使用给定函数后的结果。
语法为:map(function, iterable, …)。
其中function作为参数传入,同时也可以传递多个序列参数。map函数使用给定函数遍历所有序列的并返回一个新的序列。
示例:
def double(x):
return x * 2
numbers = [1, 2, 3, 4, 5]
result = map(double, numbers)
print(list(result))
上述代码中,我们定义了一个函数double(),使用map函数遍历了numbers列表,并使用double()函数操作原始列表中的每个元素。最终,我们得到了一个新的列表,并在屏幕上输出了它。
二、reduce函数
reduce函数也是 Python 语言中的一种高阶函数。它接收一个函数和一个迭代器作为参数,但与 map 函数不同的是,reduce() 需要一个额外的初始参数,用于在迭代开始之前应用于序列的 对元素。
语法为:reduce(function, iterable[, initializer])。
其中initializer是可选的,如果指定了它,则会将它作为 个参数传递给function。在每次处理过程中,reduce()函数将function作为参数应用于整个序列中的相邻元素,并将结果存储在类似累加器的变量中。
示例:
from functools import reduce numbers = [1, 2, 3, 4, 5] result = reduce(lambda x, y: x+y, numbers) print(result)
上述代码中,我们使用了reduce()函数,并定义了一个lambda函数来对列表中的数字求和。我们还使用了functools库导入reduce函数。最终结果是,我们把1 + 2 + 3 + 4 + 5计算出来,得到了15。
三、filter函数
filter函数在 Python 语言中常用来过滤序列,它接收一个函数和一个序列作为参数,并返回一个元素,该元素由函数返回 True 的所有原始元素组成。
语法为:filter(function, iterable)。
其中function作为参数传入,并作用于每个元素,并将所有返回 True 的元素组成一个新的序列返回。
示例:
def greater_than_five(x):
if x > 5:
return True
else:
return False
numbers = [2, 4, 6, 8, 10]
result = filter(greater_than_five, numbers)
print(list(result))
上述代码中,我们定义了一个greater_than_five()函数,该函数用于过滤出大于5的数字。然后,我们将该函数与numbers列表一起使用filter()函数。最终,我们打印出具有True值的所有数字,即[6, 8, 10]。
结论
本文讨论了Python的高级函数map、reduce和filter。在函数式编程中,这些函数在处理列表数据时非常常见,请尝试在自己的代码中使用它们并充分利用它们的好处。
