在Python中可以使用def來定義一個function,但有另一個運算子也可以定義一個function,其與def定義出的function相同,但只有一行,可以做為簡化程式碼的方法,使程式簡潔
Lambda語法
由於lambda只有一行,因此在撰寫時有一些限制條件
Parameter_list就相等於定義函式時的參數,可以有多個輸入參數,使用逗號分隔,之後可以在expression中使用這些參數。而expression則是運算部分,但只有一行,因此只能進行較為簡易之運算,較複雜之運算還是要使用一般function。
如要建立一個乘法function
而lambda函式支援IIFE語法,使用lambda建立函式後可以馬上執行
一樣相乘的例子
Lambda函式應用
1. filter(): 根據條件運算式,篩選特定的元素
如篩選數字:
或篩選字母開頭
2. sorted(): 根據lambda運算過後之結果進行排序
根據lambda運算後的結果進行排序,更改條件後排序
或根據不同的關鍵字進行排序
3. map(): 對輸入參數中的每一個元素進行一樣的運算
如對所有元素x2
4. reduce(): 套用物件中所有可迭代的元素兩兩進行運算,其步驟為:
a. 將物件中前兩個元素先進行lambda的運算
b. 接著將前一步驟運算結果與物件之第三個元素進行lambda運算
c. 重複第二步驟直到所有元素運算完成
以下是將所有元素相加之範例
Lambda函式與一般函式Function差異
- Lambda函式可以不定義函式名稱,而一般函式Function需定義名稱。
- Lambda函式只能有一行運算式,而一般函式Function可以有多行運算式。
- Lambda函式在每一次運算完會自動回傳結果,而一般函式Function要回傳結果則要加上 return 關鍵字。