map filter reduce python,map,filter,reduce
Yyds干货库存
1.简介本文重点介绍Python中的三个特殊函数,Map、Filter和Reduce,以及如何使用它们进行代码编程。在介绍之前,我们先了解两个简单的概念:高阶函数和函数。废话少说,我们开始吧!
2.高阶函数将函数作为参数传入。这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。例子如下:
def更高(你的_函数,一些_变量):
返回your _ function (some _ variable)本质上,函数map、filter、reduce都是高阶函数,它们的输入参数都是函数和可迭代对象(list、tumple等。),具体形式如下:
地图(你的功能,你的列表)
过滤器(您的函数,您的列表)
减少(你的函数,你的列表)3。lambda表达式lambda函数和普通Python函数类似,只是我们要给普通函数命名,但是对于Lambda函数是可选的。具体语法如下:
Lambda inputs: output接下来,让我们来看看几个普通的函数以及Lambda函数的等价实现,如下所示:
def multiply2(x): #与相同
返回x * 2
Multiply2=lambda x: x * 2 # lambda函数另一个例子如下:
def add(a,b): #与相同
返回a b
add=a,lambdafunction4。Map函数用于迭代cocoa迭代对象中的每个元素,以进行相应的转换操作。例如,通过将[1,2,3]中的每个元素乘以2,将[1,2,3]转换为[2,4,6]。为此,我们需要一个lambda函数,用于实现单个元素乘以2的运算,如下所示:
之前=[1,2,3]
after=list(map(lambda x:x*2,before))
# after is [2,4,6]另外我们看下一个例子,主要是用来把一个字符串的所有字符转换成大写。如下所示:
before=[苹果,橘子,梨]
after=list(map(lambda x:x.upper(),before))
# after is [apple , orange , pear]需要注意的是,虽然上面的lambda函数中使用了变量X,但是只要是有效的变量名,我们可以把它改成任何我们想要的变量名。
5.Filter函数filter用于迭代,只保留部分满足一定条件的元素。比如只要保持奇数在[1,2,3,4,5,6]以内,得到[1,3,5]。这里,我们需要一个lambda函数,它接受一个数字,如果该数字是奇数,则返回True,否则返回False。
Filter函数的主要功能是根据特定的过滤条件从可迭代对象中选择相应的元素。比如对于list [1,2,3,4,5,6],如果我们要过滤奇数个元素。我们可以实现一个lambda函数,当参数为奇数时为真,否则为假。
代码如下:
之前=[1,2,3,4,5,6]
after=list(filter(lambda x:x % 2==1,before))
# after is [1,3,5]是举个栗子,实现只保持字符串长度大于等于5,也就是把list ["apple "," orange "," pear"]转换成["apple "," orange"]。此时,我们可以实现一个lambda函数来接收一个字符串,如果字符串的长度大于或等于5,则返回True,否则返回False。代码如下:
before=[苹果,橘子,梨]
after=list(filter(lambda x:len(x)=5,before))
#之后是[苹果,橘子] 6。reduce函数Reduce主要用于以某种方式组合一个iterable对象中的所有元素。与函数map和filter不同,我们需要单独引入reduce,如下所示:
从functools导入reduce另外,reduce中使用的lambda函数需要两个参数,主要是用来告诉我们如何组合这两个元素。举个栗子的例子。如果我们需要将列表[1,2,3,4,5]中的所有元素相乘得到数字120,我们在这里需要实现的lambda函数就是接收两个数字,然后将它们相乘。代码示例如下:
从functools导入减少
之前=[1,2,3,4,5]
after=reduce(a,b: a*b,before)
# after是120的另一个例子,如果我们需要用-来连接字符串。具体来说,列表[苹果,橘子,梨]改为苹果-橘子-梨。在这里,我们需要实现一个lambda函数,它接受两个字符串,并将它们与一个字符相加。代码实现如下:
从functools导入减少
before=[苹果,橘子,梨]
After=Reduce (Lambda a,b: a-b,before) 7。摘要本文从高级函数和lambda函数入手,介绍了Map、Filter和reduce的用法,并给出了相应的代码示例。
你丢了学业吗?
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。