国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

细说Python的Lambda函数用法,建议收藏

发布时间:2019/09/03标签:   函数    点击量:

原标题:细说Python的Lambda函数用法,建议收藏
在Python中有两种函数,一种是def界说的函数,另一种是lambda函数,也就是各人常说的匿名函数。明天我就和各人聊聊lambda函数,在Python编程中,各人习气将其称为表白式。1.为甚么要用lambda函数?先举一个例子:将一个列内外的每个元素都平方。先用def来界说函数,代码以下defsq(x):returnx*xmap(sq,[yforyinrange(10)])再用lambda函数来编写代码map(lambdax:x*x,[yforyinrange(10)])从这个简略的例子,咱们能够看出,用lambda函数起首增加了代码的冗余,其次,用lambda函数,不必费心地去定名一个函数的名字,能够疾速的完成某项功效,最初,lambda函数使代码的可读性更强,顺序看起来愈加简练。从下面这个简略的例子,也能够看进去lambda函数的语法是独一的,其情势以下:lambdaargument_list:expersion语法中的argument_list是参数列表,它的构造与Python中函数(function)的参数列表是一样的,比方a,ba=1,b=2*args**kwargsa,b=1,*args空....语法中的expression是一个对于参数的表白式,表白式中呈现的参数须要在argument_list中有界说,而且表白式只能是单行的。比方以下的一些正当的表白式1Nonea+bsum(a)1ifa>10else0......除了下面提到的lambda函数的长处外,我看有的文章说用lambda函数会进步效力,那毕竟是不是呢?咱们写一段代码来考证一下importtime#测试的Def函数defsquare1(n):returnn**2#测试的Lambda函数square2=lambdan:n**2print(time.time())#应用Def函数i=0whilei<1000000000:square1(100)i+=1print(time.time())#应用lambda函数i=0whilei<1000000000:square2(100)i+=1print(time.time())1413272496.271413272703.05(Def函数:207s)1413272904.49(Lambda函数:201s)从下面能够看出,两种的所需的时光差未几,效力涓滴不受影响。2.lambad函数的用法下面也讲到了匿名函数的长处,那它究竟有哪些用途呢?(1)间接赋给一个变量,而后再像个别函数那样挪用c=lambdax,y,z:x*y*zc(2,3,4)24固然,也能够在函数前面间接通报实参(lambdax:x**2)(3)9(2)将lambda函数作为参数通报给其余函数比方说联合map、filter、sorted、reduce等一些Python内置函数应用,上面举例阐明。fliter(lambdax:x%3==0,[1,2,3,4,5,6])[3,6]squares=map(lambdax:x**2,range(5)print(lsit(squares))[0,1,4,9,16]与sorted函数联合应用,比方:创立由元组形成的列表:a=[('b',3),('a',2),('d',4),('c',1)]依照第一个元素排序sorted(a,key=lambdax:x[0])[('a',2),('b',3),('c',1),('d',4)]依照第二个元素排序sorted(a,key=lambdax:x[1])[('c',1),('a',2),('b',3),('d',4)]与reduce函数联合应用fromfunctoolsimportreduceprint(reduce(lambdaa,b:'{},{}'.format(a,b),[1,2,3,4,5,6,7,8,9]))1,2,3,4,5,6,7,8,9

版权信息Copyright © IT技术教程 版权所有    ICP备案编号:鲁ICP备09013610号