為什麼Python lambda表示式不能包含語句?
是的,Python Lambda表示式不能包含語句。在深入探討原因之前,讓我們先了解什麼是Lambda、它的表示式和語句。
Lambda表示式允許定義匿名函式。Lambda函式是一個匿名函式,即沒有名稱的函式。讓我們看看語法:
lambda arguments: expressions
關鍵字lambda定義了一個lambda函式。Lambda表示式包含一個或多個引數,但它只能有一個表示式。
Lambda示例
讓我們看一個例子:
myStr = "Thisisit!" (lambda myStr : print(myStr))(myStr)
輸出
Thisisit!
使用Lambda根據另一個列表的值對列表進行排序
在這個例子中,我們將根據另一個列表的值對列表進行排序,即第二個列表將按排序後的順序包含索引:
# Two Lists list1 = ['BMW', 'Toyota', 'Audi', 'Tesla', 'Hyundai'] list2 = [2, 5, 1, 4, 3] print("List1 = \n",list1) print("List2 (indexes) = \n",list2) # Sorting the List1 based on List2 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的語法框架無法處理巢狀在表示式中的語句。
函式在Python中已經是第一類物件,可以在區域性作用域中宣告。因此,使用lambda代替區域性定義的函式的唯一優勢是您不需要為函式發明一個名稱,即匿名,但這只是一個區域性變數,函式物件被賦值給它!
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP