当前位置: 首页 > 后端技术 > Python

从零开始学python-使用Pythonmap、filter和reduce函数:所有你需要知道的

时间:2023-03-26 13:27:54 Python

总结:在本文中,你将学习Python中三个令人印象深刻的函数,即map()、filter和reduce()。本文分享自华为云社区《从零开始学python | 使用Python映射,过滤和缩减函数:所有您需要知道的》,原作者:雨川。Python提供了许多预定义的内置函数,最终用户可以通过调用它们来使用它们。这些特性不仅简化了程序员的工作,而且创建了一个标准的编码环境。在本文中,您将了解Python中三个令人印象深刻的函数,即map()、filter和reduce()。在继续之前,让我们回顾一下内容:Python中的map、filter和reduce函数是什么?在以下范围内使用用户定义的函数和lambda函数:map()函数filter()函数reduce()函数一起使用map()、filter()和reduce()函数()在map()和reduce()在filter()那么让我们开始吧。:)Python中的map()、filter()和reduce()函数是什么?如前所述,map()、filter()和reduce()是Python的内置函数。这些函数启用了Python的函数式编程方面。在函数式编程中,传递的参数是唯一决定输出的东西。这些函数可以将任何其他函数作为参数,或提供其他函数作为参数。现在让我们更深入地研究这些函数。map()函数:map()函数是高阶函数。如前所述,此函数将另一个带有可迭代序列的函数作为参数,并在将该函数应用于序列中存在的每个可迭代序列后返回输出。它的语法如下:Syntax:map(function,iterable)这里,函数定义了一个表达式,该表达式又应用于可迭代对象。map函数可以将用户定义的函数以及lambda函数作为参数。在以下范围内使用用户定义函数和Lambda函数:map()中的用户定义函数:map()函数可以将用户定义函数作为参数。这些函数的参数由用户或程序员专门设置。示例:defnewfunc(a):returna*ax=map(newfunc,(1,2,3,4))#x是地图对象print(x)print(set(x))output:{16,1,4,9}如您所见,x是一个地图对象。输出的下一部分显示了将newfunc()作为参数然后将a*a应用于所有可迭代对象的map函数。结果,所有可迭代变量的值都与自己相乘并返回。注意:输出不是按照iterable的值的顺序,因为我使用了set()函数。您还可以使用list()或tuple()函数,例如:示例:defnewfunc(a):returna*ax=map(newfunc,(1,2,3,4))#x是地图对象print(x)print(list(x))output:[1,4,9,16]也可以传递多个参数列表。例如:示例:deffunc(a,b):returna+ba=map(func,[2,4,5],[1,2,3])print(a)print(tuple(a))输出:(3,6,8)现在让我们看看如何在map()函数中使用lambda函数。map()中的Lambda函数:Lambda函数是具有任何名称的函数。这些函数通常作为参数提供给其他函数。现在让我们尝试将lambda函数嵌入到map()函数中。考虑以下示例:示例:tup=(5,7,22,97,54,62,77,23,73,61)newtuple=tuple(map(lambdax:x+3,tup))print(newtuple)output:(8,10,25,100,57,65,80,26,76,64)上面的输出是将lambda表达式(x+3)应用于元组中存在的每个项目的结果。filter()函数:filter()函数用于创建一个输出列表,该列表由返回true的值组成。其语法如下:语法:filter(function,iterable)就像map()一样,您可以使用此函数以及用户定义的函数和lambda函数作为参数。示例:deffunc(x):ifx>=3:returnxy=filter(func,(1,2,3,4))print(y)print(list(y))output:[3,4]可以看到,y是过滤对象,list是条件(x>=3)为真的值列表。在filter()中使用lambda:用作参数的lambda函数实际上定义了要检查的条件。示例:示例:y=filter(lambdax:(x>=3),(1,2,3,4))print(list(y))输出:[3,4]上面的代码产生与之前的功能是一样的。reduce()函数:顾名思义,reduce()函数将给定函数应用于可迭代对象并返回单个值。该函数的语法如下:Syntax:reduce(function,iterable)这里的函数定义了哪些表达式需要应用于可迭代对象。这个函数需要从functools模块导入。例如:示例:fromfunctoolsimportreducereduce(lambdaa,b:a+b,[23,21,45,98])输出:187在上面的示例中,reduce函数连续添加列表中存在的每个可迭代对象,并返回单个输出。Python中的map()、filter()和reduce()函数可以一起使用。一起使用map()、filter()和reduce()函数:这样做时,首先解析内部函数,然后外部函数对内部函数的输出进行操作。让我们首先尝试将filter()函数作为参数传递给map()函数。在map()中使用filter():下面给出的代码首先检查可迭代对象的条件(x>=3)是否为真。然后,使用map()函数映射输出。示例:c=map(lambdax:x+x,filter(lambdax:(x>=3),(1,2,3,4)))print(list(c))输出:[6,8]如果从给定的元组中过滤掉大于或等于3的整数,则结果为[3,4]。然后,如果您将此条件映射到(x+x)条件,您将得到[6,8]这是输出。在filter()中使用map():当您在filter()函数中使用map()函数时,可迭代对象首先由map函数操作,然后将filter()的条件应用于它们。示例:c=filter(lambdax:(x>=3),map(lambdax:x+x,(1,2,3,4)))#lambdax:(x>=3)print(list(c))Output:[4,6,8]在reduce()中使用map()和filter():内部函数的输出根据提供给reduce()函数的条件进行缩减。示例:d=reduce(lambdax,y:x+y,map(lambdax:x+x,filter(lambdax:(x>=3),(1,2,3,4))))print(d)输出:14输出是[6,8]的结果,它是内部map()和filter()函数的结果。我们关于Python中的map()、filter()和reduce函数的文章到此结束。希望你已经清楚地理解了一切。确保尽可能多地练习和恢复经验。点击关注,第一时间了解华为云的新鲜技术~