Open Pin-Jiun opened 1 year ago
Lambda function也就是匿名函式,不需要定義名稱,只有一行運算式,語法非常簡潔,功能強大,所以現代程式語言如Java、C#及Python等都支援Lambda函式
適用於小型的運算,Python的一些內建函式甚至使用它作為參數值的運算。
現在就來介紹如何在Python中使用Lambda函式與技巧吧,包含: Lambda語法與範例 Python Lambda函式的應用 Lambda函式 vs 一般函式(Function)
Lambda函式只有一行程式碼, 語法包含了三個部分:
lambda parameter_list: expression
範例
mutply = lambda x, y: x*y #將Lambda函式指派給一個變數,接著就可以透過此變數並傳入參數來進行呼叫。 print(mutply(4,2))
Lambda函式支援IIFE(immediately invoked function expression)語法,意思是利用 function expression 的方式來建立函式,並且立即執行它,語法如下:
(lambda parameter: expression)(argument)
print((lambda x, y: x/y)(12,2))
title = "test" print(lambda text: print(text)) #lambda text: print(text)是lambda這個匿名函數object #<function <lambda> at 0x000001A70D6D3E20> #如要正確使用應該這樣 (lambda text: print(text))(title) #注意(lambda整個物件要括號才能接)(參數)使用 #以下不會出現任何東西 #lambda text: print(text)(title)
filter(function, iterable)
然後 filter() 就會回傳一個 filter 物件,是一個可迭代的物件,物件內的元素則為輸入函式後返回 True 的元素。
# Inputs inputs = [ 'a', 'bb', 'ccc', 'dddd', 'eeeee', ] # Function def bigger_than_three(string): return True if len(string) > 3 else False # Filter result = filter(bigger_than_three, inputs) print(result) print(list(result))
使用Lambda函式可以使整個code更簡潔
numbers = [20,3,4,56,87,60,26] result = filter(lambda x: x>10, numbers) print(list(result)) #[20, 56, 87, 60, 26]
map():在可疊代的物件中,套用特定運算式於每一個元素,語法為
map(lambda parameter: expression, iterable)
numbers = [20,3,4,56,87,60,26] result = map(lambda x: x-10, numbers) print(list(result)) #[10, -7, -6, 46, 77, 50, 16]
sorted():用來排序可疊代物件中的元素,語法為:
sorted(iterable, key=lambda parameter: expression)
sorted()內建方法利用關鍵字參數key來指定排序的依據,透過Lambda函式就可以自訂要排序的標的
cars = [ ("mazda",3), ("toyota",1), ("benz", 5) ] print(sorted(cars, key= lambda array: array[1]))
從範例中可以看到,在Python內建函式中使用Lambda函式非常的強大,適度的使用讓程式碼簡潔了許多。 不過也建議避免過度使用與撰寫複雜的Lambda函式,不然程式碼將不易維護,複雜的邏輯運算,還是優先選擇一般函式較為理想。
https://www.learncodewithmike.com/2019/12/python-lambda-functions.html
Lambda函式
Lambda function也就是匿名函式,不需要定義名稱,只有一行運算式,語法非常簡潔,功能強大,所以現代程式語言如Java、C#及Python等都支援Lambda函式
適用於小型的運算,Python的一些內建函式甚至使用它作為參數值的運算。
現在就來介紹如何在Python中使用Lambda函式與技巧吧,包含: Lambda語法與範例 Python Lambda函式的應用 Lambda函式 vs 一般函式(Function)
Lambda語法與範例
Lambda函式只有一行程式碼, 語法包含了三個部分:
範例
Lambda函式支援IIFE(immediately invoked function expression)語法,意思是利用 function expression 的方式來建立函式,並且立即執行它,語法如下:
Python Lambda函式的應用
然後 filter() 就會回傳一個 filter 物件,是一個可迭代的物件,物件內的元素則為輸入函式後返回 True 的元素。
使用Lambda函式可以使整個code更簡潔
map():在可疊代的物件中,套用特定運算式於每一個元素,語法為
sorted():用來排序可疊代物件中的元素,語法為:
sorted()內建方法利用關鍵字參數key來指定排序的依據,透過Lambda函式就可以自訂要排序的標的
從範例中可以看到,在Python內建函式中使用Lambda函式非常的強大,適度的使用讓程式碼簡潔了許多。 不過也建議避免過度使用與撰寫複雜的Lambda函式,不然程式碼將不易維護,複雜的邏輯運算,還是優先選擇一般函式較為理想。
https://www.learncodewithmike.com/2019/12/python-lambda-functions.html