Python高阶函数:map、filter、reduce的用法
Python是一门高级编程语言,具有丰富的函数库和内置函数。其中比较常见的高阶函数有map、filter、reduce等,这些函数较为简便地实现对数据集合的过滤、转换、合并等操作。下面将对这几个高阶函数的用法进行简要介绍。
1、map函数
map函数最常用的作用就是对列表、字典等容器类型执行指定函数,对其进行变换。语法如下:
map(function, iterable, ...)
其中,function是对每个元素的转换函数,iterable是需要执行函数转换的迭代器对象,...表示可以有多个iterable。
例如,我们将列表x里所有元素乘2,可以使用map函数。代码如下:
x = [1, 2, 3, 4]
result = map(lambda i: i * 2, x)
print(list(result))
输出结果为[2, 4, 6, 8]。这里使用了匿名函数(lambda)进行乘2的操作,也可以使用普通函数代替。
2、filter函数
filter函数常用于过滤容器类型中不需要的元素,并且可以使用lambda函数来进行指定条件下的过滤。语法如下:
filter(function, iterable)
其中,function为过滤函数,iterable为迭代器对象。例如,我们将列表x中所有的偶数过滤出来,代码如下:
x = [1, 2, 3, 4]
result = filter(lambda i: i%2==0, x)
print(list(result))
输出结果为[2, 4]。这里使用了lambda函数进行判断是否为偶数的操作。
3、reduce函数
reduce函数常用于对一个序列进行递归计算,其中序列的每两个元素会依次执行指定函数(注:Python3中将reduce函数从全局之中移除了,所以需要导入functools库才能使用,使用方法如下from functools import reduce)。语法如下:
reduce(function, sequence[, initial])
其中,function为指定的函数,sequence为序列对象,initial为可选初始参数。例如计算列表x中所有元素之和,代码如下:
from functools import reduce
x = [1, 2, 3, 4]
result = reduce(lambda x, y: x+y, x)
print(result)
输出结果为10。reduce函数首先对1和2进行计算,得到结果3;然后,继续对结果3和3进行计算,得到结果6;再对结果6和4进行计算,得到最终结果10。
总结
map、filter、reduce是Python中常见的高阶函数,它们可以通过执行指定的函数进行容器类型的转换、过滤、合并等操作。其中,map函数用于执行指定转换函数,filter函数用于过滤满足条件的元素,reduce函数用于在指定序列中进行递归计算。熟练掌握这几个函数可以有效地提高Python编程效率。
