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

Python中高阶函数(map,filter,reduce)的用法

发布时间:2023-06-12 07:04:15

Python中的高阶函数(map, filter, reduce)是非常强大且经常被使用的函数。高阶函数可以将其它函数作为参数传递或作为返回值,这种函数的特性可以让代码更为简单和减少重复的代码量。在本文中,我们将介绍这三个高阶函数(map, filter, reduce)的用法。

1. map函数

Map函数在Python中是一个非常有用的函数。它能够接受两个参数:一个函数和一个序列,并将这个函数作用于序列的每个元素。它的返回值是一个新的序列,其中每个元素都是原序列中元素经过函数处理后的结果。

示例代码:

def square(num):
    return num*num

numbers = [1, 2, 3, 4, 5]
squared = map(square, numbers)

print(list(squared))

输出结果:

[1, 4, 9, 16, 25]

在这个例子中,我们定义一个名为square的函数,它接受一个数字并返回这个数字的平方。然后我们定义了一个名为numbers的列表,它包含一些数字。我们使用map函数将square函数应用到numbers列表中的每个元素上。最终,我们得到了一个列表,其中包含了每个元素的平方。

可以看出,使用map函数可以帮助我们快速生成一个新的序列,而且这个新序列中的每个元素都是原序列中元素的变换结果。

2. filter函数

Filter函数在Python中是另一个非常有用的函数。它能够接受两个参数:一个函数和一个序列,并对序列的每个元素进行测试。它的返回值是一个新的序列,其中包含了原序列中满足测试条件的元素。

示例代码:

def is_even(num):
    return num%2 == 0

numbers = [1, 2, 3, 4, 5, 6]
even = filter(is_even, numbers)

print(list(even))

输出结果:

[2, 4, 6]

在这个例子中,我们定义了一个名为is_even的函数,它接受一个数字并返回布尔值。我们使用filter函数将is_even函数应用到numbers列表中的每个元素上,得到一个包含所有偶数的新列表。可以看到,使用filter函数可以让代码变得更加简洁和易读。

3. reduce函数

Reduce函数在Python中是一个能够将一个序列归约成单个值的函数。它接受两个参数:一个函数和一个序列。这个函数必须能够接受两个参数,它的返回结果也必须是一个值。Reduce函数对序列中的元素进行反复的迭代,并把迭代结果传递给下一次迭代,直到序列中的所有元素都被迭代了一遍。

示例代码:

from functools import reduce

def sum_num(x,y):
    return x + y

numbers = [1, 2, 3, 4, 5]
sum_all = reduce(sum_num, numbers)

print(sum_all)

输出结果:

15

在这个例子中,我们定义了一个名为sum_num的函数,它接受两个数字并返回它们的和。我们使用reduce函数将sum_num函数应用于numbers列表中的所有元素上,得到了一个包含所有元素之和的数字。可以看出,使用reduce函数可以快速将一个序列归约成单个值。但是需要注意,reduce函数在Python 3中默认不再是内建函数,而需要通过from functools import reduce导入该函数。

综上,高阶函数是Python中非常重要且有用的一种函数。通过使用map、filter和reduce函数,我们可以快速地对序列进行变换、过滤和归约,从而简化我们的代码和减少我们的开发时间。