摘要:在本文中,您将学习 Python 中的三个令人印象粗浅的函数,即 map(),filter 和 reduce()。
本文分享自华为云社区《从零开始学 python | 应用 Python 映射,过滤和缩减函数:所有您须要晓得的》,原文作者:Yuchuan。
Python 提供了许多预约义的内置函数,最终用户能够通过调用它们来应用它们。这些性能不仅简化了程序员的工作,而且创立了规范的编码环境。在本文中,您将学习 Python 中的三个令人印象粗浅的函数,即 map(),filter 和 reduce()。
在持续之前,让咱们看一下内容:
- 什么是 Python 中的 map,filter 和 reduce 函数?
- 在以下范畴内应用用户定义的函数和 lambda 函数:
- map()函数
- filter()函数
- reduce()函数
- 一起应用 map(),filter()和 reduce()函数
- map()中的 filter()
- filter()中的 map()
- map()和 filter()中带有 reduce()
因而,让咱们开始吧。:)
什么是 Python 中的 map(),filter()和 reduce()函数?
如前所述,map(),filter()和 reduce()是 Python 的内置函数。这些性能启用了 Python 的性能编程方面。在函数式编程中,传递的参数是决定输入的惟一因素。这些性能能够将任何其余性能用作参数,也能够提供给其余性能作为参数。当初让咱们更深刻地钻研这些性能。
map()函数:
map()函数是一种高阶函数。如前所述,此函数将另一个函数与一个可迭代序列一起作为参数,并在将该函数利用于序列中存在的每个可迭代序列之后返回输入。其语法如下:
句法:
地图(函数,可迭代)
在此,函数定义了一个表达式,该表达式又利用于可迭代对象。map 函数能够将用户定义的函数以及 lambda 函数作为参数。
在以下范畴内应用用户定义的函数和 Lambda 函数:
map()中的用户定义函数:
map()函数能够将用户定义的函数作为参数。这些性能的参数由用户或程序员专门设置。例如:
例子:
def newfunc(a):
return a*a
x = map(newfunc, (1,2,3,4)) #x is the map object
print(x)
print(set(x))
输入:
< 位于 0x00000284B9AEADD8 的地图对象 >
{16, 1, 4, 9}
如您所见,x 是一个地图对象。下一部分输入显示以 newfunc()作为参数的 map 函数,而后将 a * a 利用于所有可迭代对象。后果,所有可迭代变量的值将本身相乘并返回。
留神:输入不是按可迭代的值的程序,因为我应用过 set()函数。您还能够应用 list()或 tuple()函数,例如:
例子:
def newfunc(a):
return a*a
x = map(newfunc, (1,2,3,4)) #x is the map object
print(x)
print(list(x))
输入:
< 位于 0x00000284B9AEA940 的地图对象 >
[1, 4, 9, 16]
您还能够传递多个参数列表。例如:
例子:
def func(a, b):
return a + b
a = map(func, [2, 4, 5], [1,2,3])
print(a)
print(tuple(a))
输入:
< 位于 0x00000284B9BA1E80 的地图对象 >
(3, 6, 8)
当初让咱们看看如何在 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)
下面的输入是将 lambda 表达式(x + 3)利用于元组中存在的每个我的项目的后果。
filter()函数:
filter()函数用于创立由值组成的输入列表,该值针对该值返回 true。它的语法如下:
句法:
过滤器(函数,可迭代)
就像 map()一样,能够应用此函数,也能够将用户定义的函数以及 lambda 函数用作参数。
例子:
def func(x):
if x>=3:
return x
y = filter(func, (1,2,3,4))
print(y)
print(list(y))
输入:
< 位于 0x00000284B9BBCC50 的过滤器对象 >
[3, 4]
如您所见,y 是过滤器对象,并且列表是条件(x> = 3)正确的值的列表。
在 filter()中应用 lambda:
用作参数的 lambda 函数实际上定义了要查看的条件。例如:
例子:
y = filter(lambda x: (x>=3), (1,2,3,4))
print(list(y))
输入:
[3,4]
下面的代码产生的输入与以前的函数雷同。
reduce()函数:
顾名思义,reduce()函数将给定函数利用于可迭代对象并返回单个值。
该函数的语法如下:
句法:
缩小(函数,可迭代)
此处的函数定义了须要将哪些表达式利用于可迭代对象。此性能须要从 functools 模块导入。例如:
例子:
from functools import reduce
reduce(lambda a,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(lambda x:x+x,filter(lambda x: (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(lambda x: (x>=3),map(lambda x:x+x, (1,2,3,4))) #lambda x: (x>=3)
print(list(c))
输入: [4、6、8]
在 reduce()中应用 map()和 filter():
外部函数的输入依据提供给 reduce()函数的条件而缩小。
例子:
d = reduce(lambda x,y: x+y,map(lambda x:x+x,filter(lambda x: (x>=3), (1,2,3,4))))
print(d)
输入: 14
输入是 [6,8] 的后果,它是外部 map()和 filter()函数的后果。
到此为止,咱们曾经完结了无关 map(),filter()和 Python 中的 reduce 函数的文章的结尾。心愿您曾经分明地理解了所有内容。确保尽可能多地练习并复原教训。
点击关注,第一工夫理解华为云陈腐技术~