学会Lambda,让程序Pythonic一点

Lambda是Python中的高级用法。要把代码写成Pythonic,你需要知道这些高级用法。如果你想说你是一个真正的Python程序员,你必须首先使用代码
Pythonic码写。
今天就来说说Lambda的用法,写一篇简短的用法说明。
Lambda的意思是匿名函数。我们可能只在程序中使用一些简单的函数一两次。在这种情况下,您不必将其写入函数,而是使用它
Lambda的写作方法使程序更加简洁。
Lambda的写作原型如下:
lambda 参数:操作(参数)
冒号左侧为传入参数,冒号右侧为使用参数进行操作。
比如
lambdax:x+1
上述写作方法相当于下面的写作方法,给参数加1,然后返回:
defplus(x): returnx+1
比如
lambdax,y:x*y
以上写法相当于:
defmul(x,y): retuenx*y
举几个实际的例子:
1、例如对list进行排序,如下简单的listnums = [3, 1, 7, 4, 8, 10]按降序排列nums很简单,对吧?
>>>nums=[3,1,7,4,8,10]>>>sorted(nums,reverse=True)>>>[10,8,7,4,3
对嵌套list进行排序?例如:nums = [[10, 20, 11], [3, 9, 6], [8, 14, 3]我们想按照每个元素中的第二个值降序排列
直接使用上述sorted的写法是无法排序的,此时使用lambda非常方便:
>>>nums=[10、20、11][3、9、6][8、14、3] >>>sorted(nums,key=lambdax:x[1],reverse=True) >>>[10,20,11],[8,14,3],[3,9,6]
这个嵌套列表是按照预期元素的第二个值降序排列的。这个lambda意味着返回元素的第二个值,它的写作方法相当于以下几点:
>>>deflis(x): >>>returnx[1] >>>sorted(nums,key=lis,reverse=True) >>>[10,20,11],[8,14,3],[3,9,6]
相比之下,用lambda写代码要简介很多。
2.再比如按字典的value排序
nums={'yuan':80,'ren':93,'xue':60}
nums={'yuan':80,'ren':93,'xue':60}
sorted(nums,key=lambdax:nums[x],reverse=True)3.例如,如果您想取列表中的值nums = [‘1’, ‘100’, ‘111’, ‘2’, 2, 2.57]但列表中有字符串,不能直接比较大小,怎么做,用lambda处理。
>>>nums=['1','100','111','2',2,2.57] >>>max(nums,key=lambdax:int(x)) >>>'111'
这种写法相当于
deftrsn(x): returnint(x) max(nums,key=trsn)
如果lambda与mapp相结合 , filter 等高级Python语法有更多的用法。
使用lambda的优点是使代码更简单,这是程序员对代码的追求。缺点是程序不容易理解,但只要你理解lambda的用法,就不会那么难理解。
