Lambda 是什么
Lambda 是一个希腊字母,样子是 λ。在其他语言中,如:Java, Ruby 等等,也有Lambda。Lambda 带有一个「匿名的」意思,以 Python 来说,Lambda 是一个「匿名函数」。
那么为什么 Python 程序语言中需要 Lambda 函数呢?Lambda 函数有着简洁,快速得出结果的特性。如果不使用 Lambda,我们使用 普通的方法 也可以达到相同的效果。
Lambda 函数的使用方法
我们先来使用 def
声明 add 函数。Lambda 声明 add_via_lambda 函数
def add(x, y):
return x + y
add_via_lambda = lambda x, y: (x+y)
执行看看
def add(x, y):
return x + y
>>> add(1,2)
3
>>> add_via_lambda = lambda x, y: (x+y)
>>> add_via_lambda(1,2)
3
可以看出执行结果是完全一样的,聪明的你相信已经看出规律了

前面的是参数,后面的是运算式。更清楚一点,跟 def 声明的函数比较

运算式(expression)

运用场景:map
map 基本用法,使用 def
声明函数
def square(x):
return x ** 2
>>> iterator_1 = map(square, [1,2,3,4,5])
>>> list(iterator_1)
[1, 4, 9, 16, 25]
如果使用 lambda 来改写 map,可以写的更简洁,一行就可以搞定。对于我们日常运算十分有帮助。
>>> iterator_2 = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
>>> list(iterator_2)
[1, 4, 9, 16, 25]
运用场景:filter
filter 的用法是 filter(函数, 列表),如果符合条件的则会被过滤出来
>>> iterator = filter((lambda x: x>2), [1,2,3,4,5])
>>> list(iterator)
[3, 4, 5]
可以更精简的写成一行,效果一样
>>> list(filter((lambda x: x>2), [1,2,3,4,5]))
[3, 4, 5]
运用场景:switch
Python 3.10 之前因为没有类似 switch 的语法,所以可能会使用 lambda 来撰写 switch 的逻辑。
def calculate(n1, n2, operator):
switcher = {
'+': lambda n1,n2: n1+n2,
'-': lambda n1,n2: n1-n2,
'*': lambda n1,n2: n1*n2,
'/': lambda n1,n2: n1/n2,
}
return switcher.get(operator)(n1,n2)
>>> calculate(10,20,'+')
30
心得
Lambda 是个很有趣的语法,写的太多不易阅读,用的恰恰好却能够让程序更加精简。先从看懂语法开始,了解 Lambda 可以运用在哪些地方。感觉不錯😃
原文始发于微信公众号(程序猿技术充电站):Python 中的 Lambda
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/224937.html