Python高阶函数——map()、filter()、reduce()函数详解
Python高阶函数——map()、filter()、reduce()函数详解
Python中的高阶函数是函数式编程中的重要概念,它们可以让我们更加简洁有效地编写代码。本文将详细介绍Python中三个常用的高阶函数——map()、filter()、reduce()函数的用法及其特点。
1.map()函数
map()函数将一个函数作用于一个可迭代对象的所有元素,并将结果以一个新的列表形式返回。其语法如下:
map(function, iterable, ...)
其中,function指定的函数将作用在iterable给定的可迭代对象的每个元素上,并返回一个可迭代对象,相当于对序列中的每一个元素进行同样的操作。
例如:
# 将长度转化为大写
words = ['at', 'it', 'act']
m = map(str.upper, words)
print(list(m))
输出结果如下:
['AT', 'IT', 'ACT']
2.filter()函数
filter()函数是Python中另一个常用的高阶函数,它在对可迭代对象的元素进行过滤时起到了强大的作用。其语法如下:
filter(function, iterable)
其中,function指定的函数的作用是检验iterable给定可迭代对象的每个元素,并返回True或False,True保留这个元素,False剔除它,并返回一个可迭代对象,相当于进行筛选。
例如:
# 筛选偶数
def is_even(n):
return n % 2 == 0
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(is_even, data)
print(list(result))
输出结果如下:
[2,4,6,8,10]
注意:在Python 3中,filter()函数返回的结果是迭代器。如果需要将它转换为列表或其他类型的可迭代对象,可以使用list()函数、tuple()函数或生成器表达式。
3.reduce()函数
reduce()函数用于计算一个序列的累积结果。其语法如下:
reduce(function, sequence[, initial])
其中,function 必须接收两个参数,而 sequence 序列的每个元素将传递给这个函数进行计算,而 initial参数是可选的,并且如果提供了它将被插入到序列头部,并作为 个参数传递给函数。
例如:
# 求列表元素的累加和
from functools import reduce
def add(x, y):
return x + y
data = [1, 2, 3, 4, 5]
result = reduce(add, data, 0)
print(result)
输出结果如下:
15
reduce()函数的使用与另外两个函数不太相同,其需要一个特定的函数来完成它的累积的计算过程。
本文简单介绍了Python中三个高阶函数:map()、filter()和reduce()函数,对于使用它们来提高代码的简洁程度和可读性非常有帮助。注意遵循函数的语法和使用方法,便可以使用它们为我们的代码提供强大的支持。
