欢迎访问宙启技术站
智能推送

Python中的高阶函数:filter、reduce和apply

发布时间:2023-07-02 14:44:54

在Python中,高阶函数是指可以接受其他函数作为参数,也可以返回函数作为结果的函数。这些函数可以使得代码更加简洁和灵活,为Python编程带来了更高的效率和便捷性。其中,filter、reduce和apply是Python中常用的高阶函数之一。

1. filter函数:filter函数是一个内建函数,它接受两个参数, 个参数是一个函数,第二个参数是一个可迭代对象(如列表、元组、字典等),并且返回一个迭代器。filter函数通过调用传入的函数来过滤出可迭代对象中符合条件的元素。这个传入的函数需要返回一个布尔值,用于判断元素是否符合过滤条件。被过滤掉的元素将不会出现在返回的迭代器中。

例子:

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_nums = list(filter(lambda x: x % 2 == 0, nums))
print(even_nums)  # 输出:[2, 4, 6, 8, 10]

在上面的例子中,通过filter函数和lambda表达式,我们将nums列表中的偶数过滤出来并保存在even_nums列表中。

2. reduce函数:reduce函数也是一个内建函数,它接受两个参数, 个参数是一个函数,第二个参数是一个可迭代对象,如列表或者元组等。reduce函数将传入的函数作用于可迭代对象中的前两个元素,并返回一个结果。然后,再将这个结果和下一个元素作为参数,继续调用函数,直到可迭代对象中的所有元素都被处理完毕。最终,reduce函数返回一个最终的结果。

例子:

from functools import reduce
nums = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, nums)
print(product)  # 输出:120

在上面的例子中,通过reduce函数和lambda表达式,我们计算了nums列表中所有元素的乘积。

3. apply函数:apply函数不是Python内建函数,而是属于第三方库numpy中的一个函数。这个函数被用于广播一个函数到一个数组的各个轴上,并返回一个结果。

例子:

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
result = np.apply_along_axis(lambda x: np.sum(x), axis=1, arr=arr)
print(result)  # 输出:[ 6 15]

在上面的例子中,我们通过apply_along_axis函数和lambda表达式,计算了数组arr的每一行元素的和,并返回一个结果数组。

综上所述,filter、reduce和apply是Python中的高阶函数,它们可以使得代码更加简洁和灵活,并提高编程效率。filter函数用于过滤出符合条件的元素,reduce函数用于将函数作用于可迭代对象中的元素并返回一个结果,apply函数用于广播一个函数到一个数组的各个轴上,并返回一个结果。