快來新增一篇文章,將能打開個人文章頁服務!

[Python教學]Python Lambda Function應用技巧分享

Photo by Fatos Bytyqi on Unsplash
Lambda函式,也就是匿名函式,不需要定義名稱,只有一行運算式,語法非常簡潔,功能強大,所以現代程式語言如Java、C#Python等都支援Lambda函式,適用於小型的運算,Python的一些內建函式甚至使用它作為參數值的運算。現在就來介紹如何Python中使用Lambda函式與技巧吧,包含:
  • Lambda語法與範例
  • Python Lambda函式的應用
  • Lambda函式 vs 一般函式(Function)

一、Lambda語法與使用範例

由於Lambda函式只有一行程式碼,所以在撰寫時有一些限制,我們來看一下它的語法:

lambda parameter_list: expression

這邊教大家一個技巧,在撰寫Lambda函式時,於Visual Studio Code輸入 lambda 關鍵字,接著按下 Tab 鍵,就會自動產生範例中的語法,包含了三個部分:
  • lambda關鍵字
  • parameter_list(參數清單)

  • expression(運算式)
其中,parameter_list(參數清單)也就是Lambda函式的傳入參數,可以有多個,以逗號分隔。而expression(運算式)則是針對傳入參數來進行運算,只能有一行運算式,不像一般函式(Function)可以有多行。接下來,我們透過幾個範例來了解如何使用Lambda函式吧。


範例1

範例中將Lambda函式指派給一個變數,接著就可以透過此變數並傳入參數來進行呼叫。


範例2

Lambda函式支援IIFE(immediately invoked function expression)語法,意思是利用 function expression 的方式來建立函式,並且立即執行它,語法如下

(lambda parameter: expression)(argument)

範例中即是利用此語法在Lambda函式定義後,立即傳入參數執行。

範例3

透過此範例可以知道,當Lambda函式經定義後,沒有進行呼叫的動作,他會回傳一個function object且包含了記憶體位址,如果要印出值則可透過範例二的IIFE語法進行呼叫,如下範例:

二、Python Lambda函式的應用

1. filter()在可疊代的物件中,依據條件運算式,選擇特定的元素,語法為:

filter(lambda parameter: expression, iterable)

範例
filter()內建方法會將串列(List)中的每個元素傳入Lambda函式進行條件判斷,最後回傳符合條件的元素,所以執行結果為串列(List)中大於10的元素。


2. map()在可疊代的物件中,套用特定運算式於每一個元素,語法為:

map(lambda parameter: expression, iterable)

範例
map()內建方法會將串列(List)中的每個元素傳入Lambda函式進行特定的運算,最後回傳每個元素的運算結果,所以可以看到執行結果的每個串列(List)元素皆放大兩倍。


3. reduce()map()內建方法同樣在可疊代的物件中,套用特定運算式於每一個元素,但是內部的實作方式不一樣,它的實作步驟為:
  1. 將可疊代物件中的前兩個元素先進行Lambda運算式的運算。
  2. 接著將第一個步驟的運算結果和可疊代物件中的下一個元素(第三個)傳入Lambda函式進行運算。
  3. 依此類推,直到可疊代物件的元素都運算完成。
也因為每一次的運算都是兩個元素傳入,所以語法為:

reduce(lambda parameter1, parameter2: expression, iterable)

範例
PS.使用reduce()內建方法時,記得引用functools模組。


4. sorted()用來排序可疊代物件中的元素,語法為:

sorted(iterable, key=lambda parameter: expression)

範例:
sorted()內建方法利用關鍵字參數key來指定排序的依據,透過Lambda函式就可以自訂要排序的標的。範例中使用car參數來接收串列(List)中的元素,接著回傳元組(Tuple)的第二個元素(也就是價格),來進行排序。

三、Lambda函式 vs 一般函式(Function)

這邊來比較一下Lambda函式與一般函式(Function)的差異為:
  1. Lambda函式不需要定義名稱,而一般函式(Function)需定義名稱。
  2. Lambda函式只能有一行運算式,而一般函式(Function)可以有多行運算式。
  3. Lambda在每一次運算完會自動回傳結果,而一般函式(Function)如果要回傳結果要加上 return 關鍵字。

四、小結

以上就是今天Python Lambda函式使用上的觀念與技巧,從範例中可以看到,在Python內建函式中使用Lambda函式非常的強大,適度的使用讓程式碼簡潔了許多。不過也建議避免過度使用與撰寫複雜的Lambda函式,不然程式碼將不易維護,複雜的邏輯運算,還是優先選擇一般函式(Function)較為理想

感謝大家今天的收看,在練習的過程中若有碰到問題或說明不清楚的地方,歡迎留言與我分享!



如果您喜歡我的文章,請幫我按五下Like(使用Google或Facebook帳號免費註冊),支持我創作教學文章,回饋由LikeCoin基金會出資,完全不會花到錢,感謝大家。
 
有想要看的教學內容嗎?歡迎利用以下的Google表單讓我知道,將有機會成為教學文章,分享給大家😊

你可能感興趣的文章

comment