Python中Lambda的用法

Lambda是Python里的高阶用法,Lambda是匿名函数的意思,在程序中有些简单的函数我们可能只会使用一两次,这种情况下,你不必把它写成一个函数,而是用Lambda的写法,来让程序更简洁。

Python中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

Python中Lambda的操作实例

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]]

我们想按每个元素里的第二个值降序排列

Python中Lambda的用法-我爱自学

直接用上面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的用法,也没那么难懂。

以上介绍的就是在Python中Lambda的用法!

转载请注明出:我爱自学 » Python中Lambda的用法

赞 (0)