在學習python的過程當中,lambda的語法常常出現,如今將它整理一下,以備往後查看。 python
舉個例子以下:函數
1 func=lambda x:x+1 2 print(func(1)) 3 #2 4 print(func(2)) 5 #3 6 7 #以上lambda等同於如下函數 8 def func(x): 9 return(x+1)
能夠這樣認爲,lambda做爲一個表達式,定義了一個匿名函數,上例的代碼x爲入口參數,x+1爲函數體。在這裏lambda簡化了函數定義的書寫形式。是代碼更爲簡潔,可是使用函數的定義方式更爲直觀,易理解。學習
Python中,也有幾個定義好的全局函數方便使用的,filter, map, reduce。spa
1 from functools import reduce 2 foo = [2, 18, 9, 22, 17, 24, 8, 12, 27] 3 4 print (list(filter(lambda x: x % 3 == 0, foo))) 5 #[18, 9, 24, 12, 27] 6 7 print (list(map(lambda x: x * 2 + 10, foo))) 8 #[14, 46, 28, 54, 44, 58, 26, 34, 64] 9 10 print (reduce(lambda x, y: x + y, foo)) 11 #139
上面例子中的map的做用,很是簡單清晰。可是,Python是否非要使用lambda才能作到這樣的簡潔程度呢?在對象遍歷處理方面,其實Python的for..in..if語法已經很強大,而且在易讀上賽過了lambda。 對象
好比上面map的例子,能夠寫成:print ([x * 2 + 10 for x in foo]) 很是的簡潔,易懂。 import
filter的例子能夠寫成:print ([x for x in foo if x % 3 == 0]) 一樣也是比lambda的方式更容易理解。匿名函數