測試環境為 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
[root@localhost ~]# python3 Python 3.6.8 (default, Mar 25 2022, 11:15:52) [GCC 8.5.0 20210514 (Red Hat 8.5.0-10)] on linux Type "help", "copyright", "credits" or "license" for more information.
lambda
一般是透過 def 的方式來定義涵式,如果是只有一行的函式可以使用 lambda 匿名函式的方式來定義.
- 範例 1: lambda 匿名函式
lambda 函式語法如下(可多個參數並且回傳值).func = lambda parameter_list: expression
>>> square=lambda x: x ** 2 >>> square(3) 9
說明:
- x: 為輸入參數
- x ** 2 (x=x*2) 計算結果並回傳
- 範例 2: lambda 匿名函式 function expression
function expression 語法如下(lambda parameter: expression)(argument)
此語法用在 Lambda 函式定義之後,立即傳入參數並執行.
>>> print((lambda x,y : x+y)(3,5)) 8
- 範例 3: lambda 匿名函式,傳入多個參數.
>>> add_number = lambda x,y : x+ y >>> add_number(3,5) 8
- 範例 4: lambda 匿名函式,搭配 if 條件判斷式.
>>> abs_number = lambda x : x if x >= 0 else -x >>> abs_number(3) 3 >>> abs_number(-3) 3
filter , map , reduce
lambda 匿名函式還可以搭配 filter , map , reduce 函式來使用.
需要多一個參數 iterable 為可疊代的物件(如 list 物件)當作資料的輸入 , 關於 iterable 請參考 – https://benjr.tw/104591
filter(lambda parameter: expression, iterable)
- 範例 : 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
沒有解決問題,試試搜尋本站其他內容