Python map()、filter()、reduce()等常用高阶函数
Python是一种功能强大和灵活的编程语言,而高阶函数是Python中的一种重要概念,它们经常被用于函数式编程中。高阶函数是指根据提供的函数作为参数,然后返回另一个函数的函数。Python内置了许多常用的高阶函数,其中包括map()、filter()、reduce()等等,这些函数可以大大提高代码的简洁性和可读性。下面我们就分别来了解一下它们。
map()函数可以将一个函数应用于一个序列的每个元素,并返回对应的新列表。其语法如下:
map(function, iterable, ...)
其中,参数function是一个参数列表的函数,iterable是一个或多个序列。map()函数的返回值是一个由函数处理每个元素后组成的新列表。
比如说,我们想将一个列表中的所有元素都平方,可以这样写:
lst = [1, 2, 3, 4, 5] new_lst = map(lambda x : x ** 2, lst) print(list(new_lst)) # [1, 4, 9, 16, 25]
该代码中,我们使用lambda表达式来定义一个函数,然后将该函数作为参数传递给map()函数。该函数的作用是对于传入的参数x,返回x的平方。map()函数将这个函数应用于列表中的每个元素,并返回一个新的列表,其中每个元素是原列表中对应元素的平方。
filter()函数根据给定的函数过滤一个序列,返回一个由符合条件的元素组成的列表。其语法如下:
filter(function, iterable)
其中,参数function是一个参数列表的函数,iterable是一个序列。filter()函数的返回值是一个列表,其中包含符合条件的元素。
例如,我们想筛选出一个列表中所有的偶数,可以这样写:
lst = [1, 2, 3, 4, 5] new_lst = filter(lambda x : x % 2 == 0, lst) print(list(new_lst)) # [2, 4]
该代码中,我们使用lambda表达式来定义一个函数,返回值是当传入值x是偶数时返回True。filter()函数将这个函数应用到列表中的每个元素,仅保留满足条件的元素,返回一个新的列表。
reduce()函数根据给定的函数对序列的元素进行累加,返回一个单一的值。其语法如下:
reduce(function, iterable[, initializer])
其中,参数function是一个带有两个参数的函数,iterable是一个序列。reduce()函数的返回值是所有元素被累加的结果。可选参数initializer是累加的初始值(默认为0)。
例如,我们想将一个列表中的所有元素进行累加,可以这样写:
from functools import reduce lst = [1, 2, 3, 4, 5] result = reduce(lambda x, y : x + y, lst) print(result) # 15
该代码中,我们使用lambda表达式来定义一个函数,接收两个参数x和y,返回它们的和。reduce()函数将该函数应用于列表中的每一对元素,将结果逐个累加得出一个单一的值。
在日常编程中,这些高阶函数经常被用于列表的处理和操作。利用它们,我们可以非常简单地对一个列表进行变换、筛选、累加等操作,简化了代码的复杂度,提高了程序的执行效率和可读性。
