脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python lambda表达式用法实例分析

Python lambda表达式用法实例分析

2021-05-07 00:27菜鸟学编程$ Python

这篇文章主要介绍了Python lambda表达式用法,结合实例形式分析了lambda表达式的具体功能、应用场景及相关使用技巧,需要的朋友可以参考下

本文实例讲述了Python lambda表达式用法。分享给大家供大家参考,具体如下:

lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。

lambda就是用来定义一个匿名函数的,如果还要给他绑定一个名字的话,就会显得有点画蛇添足,通常是直接使用lambda函数。如下所示:

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

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

1、应用在函数式编程中

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

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

运行结果:

[0, -1, -2, 3, -4, 5, -6]

当然,也可以如下:

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

只不过这种方式的代码看起来不够Pythonic

2、应用在闭包中

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

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

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

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

那么是不是任何情况下lambda函数都要比常规函数更清晰明了呢?

肯定不是。

Python之禅中有这么一句话:Explicit is better than implicit(明了胜于晦涩),就是说那种方式更清晰就用哪一种方式,不要盲目的都使用lambda表达式。

希望本文所述对大家Python程序设计有所帮助。

原文链接:https://www.cnblogs.com/hf8051/p/8085424.html

延伸 · 阅读

精彩推荐