为什么 Python 的 lambda 表达式不能包含语句?
是的,Python 的 lambda 表达式不能包含语句。在深入研究其原因之前,让我们先了解什么是 Lambda,它的表达式和语句。
Lambda 表达式允许定义匿名函数。lambda 函数是一种无名函数。让我们看一下其语法 –
lambda arguments: expressions
关键字 lambda 定义了一个 lambda 函数。lambda 表达式包含一个或多个参数,但只能有一个表达式。
阅读更多:Python 教程
Lambda 示例
让我们看一个例子 –
myStr = "Thisisit!"
(lambda myStr : print(myStr))(myStr)
输出
Thisisit!
使用 Lambda 按另一个列表的值对列表进行排序
在此示例中,我们将根据另一个列表的值对列表进行排序,即第二个列表将按排序顺序放置索引 –
# 两个列表
list1 = ['BMW', 'Toyota', 'Audi', 'Tesla', 'Hyundai']
list2 = [2, 5, 1, 4, 3]
print("List1 = \n",list1)
print("List2 (indexes) = \n",list2)
# 基于 List2 对 List1 进行排序
res = [val for (_, val) in sorted(zip(list2, list1), key=lambda x: x[0])]
print("\nSorted List = ",res)
输出
List1 =
['BMW', 'Toyota', 'Audi', 'Tesla', 'Hyundai']
List2 (indexes) =
[2, 5, 1, 4, 3]
Sorted List = ['Audi', 'BMW', 'Hyundai', 'Tesla', 'Toyota']
Lambda 表达式不能包含语句
我们已经看到了两个示例,其中我们使用了 Lambda 表达式。Python 的语法框架无法处理嵌套在表达式中的语句,因此 Lambda 表达式不能包含语句。
在 Python 中,函数已经是一等对象,并且可以在局部范围中声明。因此,使用 Lambda 而不是局部定义的函数的唯一优点是,您不需要为函数发明一个名称,即它是一个匿名函数,但这只是一个函数对象分配给的局部变量!
极客教程