我们知道Python中的循环很慢,那么如果您正在处理类似的情况怎么办?在这篇文章中,我将与大家分享可以用来替代Python循环的方法和案例:MapFilterReduce在开始使用上述功能之前,如果你对lambda函数还不熟悉,我们先来快速了解一下。Lambda函数是常规函数的替代方法。它可以在一行代码中定义,因此在我们的代码中占用的时间和空间更少。例如,在下面的代码中,我们可以看到正在运行的lambda函数。defmultiply_by_2(x):x*2lambdafunctionlambdax:x*2注意:最好使用lambda函数而不是常规函数。1.Map使用map函数,我们可以对可迭代对象(列表、元组等)的每个值应用一个函数。map(function,iterable)假设我们想要获取列表(可迭代对象)中数字的平方。我们将从创建一个square()函数开始计算一个数的平方。defsquare(x):returnx*x然后,我们将使用map函数将square()函数应用于输入的数字列表。input_list=[2,3,4,5,6]#没有lambdaresult=map(square,input_list)#使用lambda函数result=map(lambdax:x*x,input_list)#将数字转换成列表list(result)#Output:[4,9,16,25,36]2.过滤直观上,过滤函数用于从可迭代对象(列表、元组、集合等)中过滤出值。过滤条件在作为参数传递给过滤函数的函数中设置。filter(function,iterable)我们将使用filter函数过滤小于10的值。defless_than_10(x):ifx<10:returnx然后我们将使用Filter函数将less_than_10()函数应用到值列表。input_list=[2,3,4,5,10,12,14]#没有lambdalist(filter(less_than_10,input_list))#使用lambda函数list(filter(lambdax:x<10,input_list))#Output:[2,3,4,5]3.ReduceReduce函数与map和filter函数有点不同。它被迭代地应用于iterable的所有值并且只返回一个值。在以下示例中,通过应用加法函数减少了数字列表。最终输出将是列表中所有数字的总和,即15。让我们创建一个将两个输入数字相加的addition()函数。defaddition(x,y):returnx+y接下来,为了获得列表中所有数字的总和,我们将把这个加法函数作为参数应用到reduce函数。fromfunctoolsimportreduceinput_list=[1,2,3,4,5]#没有Lambdafunctionreduce(addition,input_list))#WithLambdafunctionreduce(lambdax,y:x+y,input_list))#Output:15
