想必大家都知道匿名是什麼意義,匿名就是指沒有名字,我們在寫程式的過程中有時不需要給函數命名,這時候就可以使用匿名函數,我們在Python中使用lambda表達式來使用匿名函數。
我們透過一個例子來介紹lambda函數的簡單使用,變數m為我們輸入的值,我們需要採用匿名函數來傳回m的平方和,也就是輸入2要回傳值為4。
程式碼如下:
m=int(input('請輸入一個數字:'))#m為輸入的值a=lambdax:x*x#使用變數a來構成一個表達式print('傳回值為:',a(m))
輸出結果為:
請輸入一個數字:6回傳值為:36
我們透過下圖再來看一下它的結構:
下面再透過一個例子來使用一下匿名函數:
m=int(input('請輸入數字:'))#m為輸入的值a=lambdax:x+10*10+x*xprint('傳回值為:',a(m))
輸出結果為:
請輸入一個數字:5回傳值為:130
透過上面兩個例子我們可以了解到lambda表達式等同於把函數壓縮成一行程式碼,然後透過變數的定義直接來呼叫這個函數,這種方式可以簡化我們的程式碼。
我們在序列中同樣可以使用匿名函數,使用匿名函數可以幫助我們進行快速的資料篩選,看下面的範例:
已知一個列表為[1,4,6,9,12,23,25,28,36,38,41,56,63,77,88,99],我們需要返回它裡面的偶數並存放在列表當中。
我們可以使用filter函數來進行過濾。
程式碼如下:
my_list=[1,4,6,9,12,23,25,28,36,38,41,56,63,77,88,99]print(list(filter(lambdax:x%2==0, my_list)))
輸出結果為:
[4,6,12,28,36,38,56,88]
我們從裡到外依次來分析這個表達式, filter()函數中的對象前者為我們的篩選方式,後者為我們要篩選的對象,然後我們把這些數據使用list()函數存放在了列表當中,最後列印出來,這種方式可以幫助我們很快的進行數據的整合。
我們在進行排序的時候也可以透過匿名函數來制定規則。
首先我們已知一組列表為[('元組甲',15,33),('元組乙',25,26),('元組丙',7,7)],列表中每個元素中的元組中包含每個元組的名字和最小值以及最大值,我們要根據每個人的元組最大值和最小值的差值來將列表進行排序,看下面代碼:
my_list=[('元組甲',15,33),('元組乙',25,26),('元組丙',7,7)]my_list.sort(key=lambdax:x[2 ]-x[1])#使用key關鍵字來引入排序方式,排序方式根據第三個元素減去第二個元素的差值,對應索引為2和1print(my_list)
輸出結構為:
[('元組丙',7,7),('元組乙',25,26),('元組甲',15,33)]
我們可以先簡單的計算一下,他們的差值分別為18、1、0,所以他們的排列順序應該是丙、乙、甲,透過lambda表達式中的回傳結果x[2]-x[1] ,我們獲得了他們的差值,然後根據差值進行排序。
匿名函數在資料篩選的時候顯得特別重要,它能夠很快的幫助我們來解決資料複雜繁瑣的問題,同時它可以優化我們的程式碼,使得程式碼的整體更為簡潔,本章節我們就講到這裡,下一節我們將來學習函數中的三大基礎函數。