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

Python高阶函数——map()、filter()、reduce()函数详解

发布时间:2023-06-20 01:37:17

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()函数,对于使用它们来提高代码的简洁程度和可读性非常有帮助。注意遵循函数的语法和使用方法,便可以使用它们为我们的代码提供强大的支持。