測試環境為 CentOS 8 x86_64 (虛擬機)
參考文章 – https://medium.com/seaniap/python-lambda-%E5%87%BD%E5%BC%8F-7e86a56f1996 與 https://www.learncodewithmike.com/2019/12/python-lambda-functions.html
lambda
一般是透過 def 的方式來定義涵式,如果是只有一行的函式可以使用 lambda 匿名函式的方式來定義. lambda 函式語法如下(可多個參數並且回傳值).
func = lambda parameter_list: expression
- 範例 1: lambda 匿名函式
>>> square=lambda x: x ** 2 >>> square(3) 9
說明:
- x: 為輸入參數
- x ** 2 (x=x*2) 計算結果並回傳
- 範例 2: lambda 匿名函式
>>> add_number = lambda x,y : x+ y >>> add_number(3,5) 8
- 範例 : 搭配 if 條件判斷式
>>> abs_number = lambda x : x if x >= 0 else -x >>> abs_number(3) 3 >>> abs_number(-3) 3
- 範例 : function expression
語法如下(lambda parameter: expression)(argument)
此語法用在 Lambda 函式定義之後,立即傳入參數並執行.
>>> print((lambda x,y : x+y)(3,5)) 8
filter , map , reduce
- 範例 : filter() 函式
透過條件運算式篩選特定的元素,其中的 iterable 為可疊代的物件(如 list 物件),語法如下:filter(lambda parameter: expression, iterable)
輸入參數 x 的值來自於 nums (list 物件),並透過判斷式看值是否大於 25.
>>> nums=[10 , 20 , 30 , 40 , 50] >>> result=filter(lambda x: x>25 , nums) >>> print(list(result)) [30, 40, 50]
- 範例 : map() 函式
透過條件運算式計算出結果,其中的 iterable 為可疊代的物件(如 list 物件),語法如下:map(lambda parameter: expression, iterable)
輸入參數 x 的值來自於 nums (list 物件),並透過計算值是否大於 25(True 為真, False 為否).
>>> nums=[10 , 20 , 30 , 40 , 50] >>> result=map(lambda x: x>25 , nums) >>> print(list(result)) [False, False, True, True, True]
輸入參數 x 的值來自於 nums (list 物件),並透過運算式 (x*2) 加倍其值.
>>> nums=[10 , 20 , 30 , 40 , 50] >>> result=map(lambda x: x*2 , nums) >>> print(list(result)) [20, 40, 60, 80, 100]
- 範例 : reduce() 函式
可以將疊代物件中的前後兩個元素並透過運算式做運算,其結果再跟疊代物件中的下一個元素進行運算直到結束.reduce(lambda parameter1, parameter2: expression, iterable)
輸入參數 x 的值來自於 nums (list 物件),並透過運算式累加其值.
>>> nums=[10 , 20 , 30 , 40 , 50] >>> result=reduce(lambda x , y : x+y , nums) >>> print(result) 150
沒有解決問題,試試搜尋本站其他內容