likes
comments
collection
share

Python中强大的函数: map()、filter() 和 reduce()|Python 主题月

作者站长头像
站长
· 阅读数 18

本文正在参加「Python主题月」,详情查看 活动链接

概述

Python 包含许多预定义的内置函数,最终用户可以通过简单地调用它们来使用它们。这些功能不仅使程序员的工作更轻松,而且有助于建立一个通用的编码环境。在本教程中,您将了解 Python 的三个最强大的函数:map()、filter() 和 reduce()。

函数式编程的三大支柱是 map、filter 和 reduce 函数。虽然 Python 不完全是一种函数式编程语言,但它确实有很多特性使它如此。本文讨论了 Python 中的 map、filter 和 reduce 函数,以及它们如何对应于函数式编程原则。

函数式编程

使用函数来定义计算的编程范式称为函数式编程。不可更改状态的概念是函数式编程的关键定义特征之一。

计算是通过命令式编程中的语句完成的,这可以说是您已经熟悉的最流行的编程范式。这些命令会影响变量的值,从而影响执行后的计算状态。例如,for 循环可以重复执行一条语句,每次更改变量的值,如下所示:

counter = 0
for i in range(10):
    counter += 1

在循环的每次迭代中,计数器的值每次增加 1 时,计算状态都会发生变化,使其更接近结束状态。

在我们讨论 Python 中的“map()”、“filter()”和“reduce()”函数的示例之前,我们需要了解另一个概念:高阶函数。

高阶函数

在函数式编程中,高阶函数是我们定义计算的主要工具。这些是将函数作为参数并返回函数作为结果的函数。Reduce()、map() 和 filter() 是 Python 中最有用的三个高阶函数。当与更简单的功能配对时,它们可用于执行复杂的操作。

下面的代码示例演示了一个高阶函数。print greeting() 接受两个参数:函数 f 和名称 n,并返回调用 f 的结果。(n)。

def greet(name):
    return "Hello, {}!".format(name)
def print_greeting(f, n):
    print(f(n))

匿名函数

我们在上一节中看到了一个将另一个函数作为参数的函数示例。函数 map()、filter() 和 reduce() 都做同样的事情:它们每个都接受一个函数和一个元素列表,然后返回将函数应用于列表中每个元素的结果。

如前所述,Python 具有内置函数,如 map()、filter() 和 reduce()。Python 的函数式编程特性是通过这些函数启用的。在函数式编程中,唯一决定输出的因素是传入的输入。这些函数可以接受任何其他函数作为参数,也可以作为参数传递给其他函数。现在让我们更详细地了解这些函数中的每一个。

我们有三个主要功能:

  1. 地图()
  2. 筛选()
  3. 减少()

1.map() 函数:

map() 函数是一个高阶函数。如前所述,此函数接受另一个函数和一系列“可迭代对象”作为参数,并在将函数应用于序列中的每个可迭代对象后提供输出。它具有以下语法:

语法:  映射(函数,可迭代对象)

该函数用于定义一个表达式,然后将其应用于“可迭代对象”。用户定义函数和 lambda 函数都可以发送到 map 函数。

用户定义的函数可以发送到 map() 方法。用户或程序员是唯一可以更改这些函数参数的人。

例子

def function(a): 
    return a*a 
x = map(function, (1,2,3,4)) #x是地图对象
print(x) 
print(set(x))

输出

{16, 1, 4, 9}

x 是一个地图对象,如您所见。接下来显示 map 函数,它以“function()”为参数,然后将“a * a”应用于所有 'iterables'。结果,所有可迭代对象的值在返回之前都与它们自身相乘。

让我们看看如何在 map() 方法中使用 lambda 函数。

map() 函数中的 Lambda:

没有名称的函数称为 lambda 函数。这些函数经常用作其他函数的输入。让我们尝试将 Lambda 函数集成到 map() 函数中。

例子

tup= (5, 7, 22, 97, 54, 62, 77, 23, 73, 61)
newtuple = tuple(map(lambda x: x+3 , tup)) 
print(newtuple)

输出

(8, 10, 25, 100, 57, 65, 80, 26, 76, 64)

2.filter()函数:

filter() 函数用于生成在调用该函数时返回 true 的值的输出列表。它具有以下语法:

语法:  过滤器(函数,可迭代对象)

这个函数和 map() 一样,可以接受用户定义的函数和 lambda 函数作为参数。

例子

def func(x):
    如果 x>=3: 
        return x 
y = filter(func, (1,2,3,4))   
print(y) 
print(list(y))

输出

[3, 4]

如您所见,y 是过滤器对象,列表是条件 (x>=3) 的真值集合。

filter() 函数中的 Lambda:

要检查的条件由作为参数提供的 lambda 函数定义。

例子

y = filter(lambda x: (x>=3), (1,2,3,4))
打印(列表(y))

输出

[3, 4]

3.reduce() 函数:

顾名思义,reduce() 函数将提供的函数应用于“可迭代对象”并返回单个值。

Python中强大的函数: map()、filter() 和 reduce()|Python 主题月

语法:  reduce(function, iterables)

该函数指定在这种情况下应将哪个表达式应用于“可迭代对象”。必须使用功能工具模块来导入此功能。

例子

from functools import reduce

reduce(lambda a,b: a+b,[23,21,45,98])

输出

187

前面示例中的 reduce 函数将列表中的每个可迭代对象一一添加并返回单个结果。

Python 函数 map()、filter() 和 reduce() 都可以一起使用。

🍺 快速总结——Python中强大的函数: map()、filter() 和 reduce()

所以,这篇关于 Python 中的 map()、filter() 和 reduce 函数的文章。我希望你已经清楚地了解了一切。确保你在 map()、filter() 和 reduce() 上练习,因为这个函数在我们使用 python 进行数据分析时非常有用。

如果您喜欢这篇文章并有兴趣看到更多此类文章,可以看看这里,这里汇总了我的全部原创及作品源码:

GithubGitee

🧵 更多相关文章

往日优秀文章推荐:

如果你真的从这篇文章中学到了一些新东西,喜欢它,收藏它并与你的小伙伴分享。🤗最后,不要忘了❤或📑支持一下哦