Lambda 是 Python 中的高级用法。如果你想写出 Pythonic 的代码,你需要了解这些高级用法。要想说你是一个真正的Python程序员,首先得写代码
码写得Pythonic。
今天聊下Lambda的用法,写篇简短的用法说明。
Lambda 表示匿名函数。我们在程序中可能只会用到一些简单的功能一两次。在这种情况下,你不必将其编写为函数,而是使用
Lambda的写法,来让程序更简洁。
Lambda的写法原型是:
lambda 参数:操作(参数)
冒号左边是传入的参数,冒号右边是使用参数要做的操作。
比如
lambda x:x+1
上面的写法等同于如下写法,给参数加1,再返回:
def plus(x):
return x+1
比如
lambda x,y:x*y
上面的写法等同于:
def mul(x,y):
retuen x*y
举几个实际的例子:
1、比如对list排序,如下简单的list
nums = [3, 1, 7, 4, 8, 10]
对nums按降序排列,这个很简单是吧:
>>>nums = [3, 1, 7, 4, 8, 10]>>>sorted(nums, reverse=True)>>>[10, 8, 7, 4, 3, 1]
如果是对嵌套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=lambda x:x[1], reverse=True)
>>>[[10, 20, 11], [8, 14, 3], [3, 9, 6]]
此嵌套列表按意外元素的第二个值降序排序。这个 lambda 表示返回元素的第二个值。它的写法等价于如下:
>>>def lis(x):
>>> return x[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=lambda x: 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=lambda x:int(x))
>>>'111'
这个写法等同于
def trsn(x):
return int(x)
max(nums, key=trsn)
如果lambda结合map , filter 等高阶Python语法,还有更多的用法。
如上使用lambda的好处是让代码更加简洁,这是程序员对代码的一种追求。缺点是程序不太好理解,不过只要了解了lambda的用法,也不是那么难懂。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何评论python09/23
- ♥ 什么书对python有好处10/25
- ♥ python字典的工作原理11/03
- ♥ python正则表达式中量词的分类12/28
- ♥ 什么是Python中文分词?如何安装?01/05
- ♥ Python编程实践:求一个二次方程的根08/14
内容反馈