python中的lambda关键字(repost from https://www.cnblogs.com/hf8051/p/8085424.html)

lambda表达式在需要一个函数同时又不想去命名一个函数的场合下使用,指匿名函数。

1 add = lambda x, y : x+y
2 add(1,2)  # 结果为3

那么到底要如何使用lambda表达式呢?

1、应用在函数式编程中

Python提供了很多函数式编程的特性,如:map、reduce、filter、sorted等这些函数都支持函数作为参数,lambda函数就可以应用在函数式编程中。如下:

1 # 需求:将列表中的元素按照绝对值大小进行升序排列
2 list1 = [3,5,-4,-1,0,-2,-6]
3 sorted(list1, key=lambda x: abs(x))

当然,也可以如下(不使用lambda):

1 list1 = [3,5,-4,-1,0,-2,-6]
2 def get_abs(x):
3     return abs(x)
4 sorted(list1,key=get_abs)

以上这种方式的代码看起来不够Pythonic(hhhh)

2.应用在闭包中

1 def get_y(a,b):
2      return lambda x:ax+b
3 y1 = get_y(1,1)
4 y1(1) # 结果为2

当然,也可以用常规函数实现闭包,如下:

1 def get_y(a,b):
2     def func(x):
3         return ax+b
4     return func
5 y1 = get_y(1,1)
6 y1(1) # 结果为2

只不过这种方式显得有点啰嗦。

posted @ 2019-09-17 22:22  思念殇千寻  阅读(210)  评论(0编辑  收藏  举报