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

Python高阶函数:map、filter和reduce的用法及应用

发布时间:2023-06-16 22:54:45

Python语言中的高阶函数:map、filter和reduce,是运用广泛的函数之一,它们可以简化代码量,提高程序的效率。本文将详细介绍这三个高阶函数的用法及其应用。

一、map函数

map函数是Python内置的函数,其作用是将一个可迭代对象的每个元素都进行相同的操作,返回对应的新的迭代器。

map()函数的语法如下:

map(function, iterable, ...)

其中,function是一个自定义函数,iterable是可迭代对象。map()函数将function函数作用于iterable可迭代对象中的每个元素,并返回一个map对象。

例如,我们将列表中的数字全部转换为字符串:

>>> num_list = [1, 2, 3, 4, 5]
>>> str_list = map(str, num_list)
>>> print(list(str_list))
['1', '2', '3', '4', '5']

我们也可以使用lambda表达式来实现:

>>> num_list = [1, 2, 3, 4, 5]
>>> str_list = map(lambda x:str(x), num_list)
>>> print(list(str_list))
['1', '2', '3', '4', '5']

二、filter函数

filter函数也是Python内置的函数,其作用是从序列中过滤出符合条件的元素,并返回一个新的序列。

filter()函数的语法如下:

filter(function, iterable)

其中,function是一个自定义函数,iterable是可迭代对象。filter()函数将function函数作用于iterable可迭代对象中的每个元素,并返回一个包含符合条件元素的迭代器。

例如,我们可以筛选出列表中的偶数:

>>> num_list = [1, 2, 3, 4, 5]
>>> even_list = filter(lambda x:x%2==0, num_list)
>>> print(list(even_list))
[2, 4]

三、reduce函数

reduce函数是Python内置的函数,它是Python 2中的内建函数,在Python 3中需要通过引入functools模块来使用。reduce()函数的作用是对一个序列进行归纳计算,返回一个计算结果。

reduce()函数的语法如下:

reduce(function, iterable[, initial])

其中,function是一个自定义函数,iterable是可迭代对象,initial是可选参数。reduce()函数对于iterable中的元素,使用function函数进行归纳计算,并最终返回一个值。

例如,我们可以计算列表中所有元素之和:

>>> from functools import reduce
>>> num_list = [1, 2, 3, 4, 5]
>>> sum = reduce(lambda x,y:x+y, num_list)
>>> print(sum)
15

在reduce()函数中使用initial参数,可以指定计算的初始值:

>>> from functools import reduce
>>> num_list = [1, 2, 3, 4, 5]
>>> sum = reduce(lambda x,y:x+y, num_list, 10)
>>> print(sum)
25

四、应用案例

(1)map函数实现列表中所有元素的平方

>>> num_list = [1, 2, 3, 4, 5]
>>> square_list = map(lambda x:x*x, num_list)
>>> print(list(square_list))
[1, 4, 9, 16, 25]

(2)filter函数实现筛选出列表中大于平均数的元素

>>> num_list = [1, 2, 3, 4, 5]
>>> avg = sum(num_list) / len(num_list)
>>> new_list = filter(lambda x:x>avg, num_list)
>>> print(list(new_list))
[4, 5]

(3)reduce函数实现阶乘

>>> from functools import reduce
>>> num = 5
>>> factorial = reduce(lambda x,y:x*y, range(1, num+1))
>>> print(factorial)
120

综上所述,map、filter和reduce函数都是Python语言中非常实用的高阶函数,它们大大简化了代码量,提高了程序效率,应用广泛,我们一定要熟记它们的详细用法及应用。