1. 程式人生 > >Python單行函數lambda(小米)加reduce、map、filter(步槍)應用

Python單行函數lambda(小米)加reduce、map、filter(步槍)應用

() 列表 數據 程序 src lis text 小米 python

什麽是lambda?

lambda定義匿名函數,並不會帶來程序運行效率的提高,只會使代碼更簡潔。為了減少單行函數的定義而存在的。
lambda的使用大量簡化了代碼,使代碼簡練清晰。但是值得註意的是,這會在一定程度上降低代碼的可讀性。如果不是非常熟悉Python的人也許會對此很難理解。
如果可以使用for...in...if來完成的,堅決不用lambda。
如果使用lambda,lambda內不要包含循環,如果有,寧願定義函數來完成,使代碼獲得可重用性和更好的可讀性。如果你對你就喜歡用lambda來做,那也無可厚非,但是有內置函數減弱了代碼的可讀性!

好了介紹完成了lambda,那就讓我們來實際用一下,實例如下:

技術分享圖片

下面我們再來看看小米加上步槍的結合使用。
1、reduce + lambda
What is reduce?

Python中的reduce內建函數是一個二元操作函數,他用來將一個數據集合(列表,元組等)中的所有數據進行如下操作:傳給reduce中的函數func() (必須是一個二元操作函數)先對集合中的第1,2個數據進行操作,得到的結果再與第三個數據用func()函數運算,最後得到一個結果。

關於python reduce的詳細解析,後續詳細介紹,下面我們介紹一下reduce + lambda的應用案例:

技術分享圖片

Python3 統計某字符串重復次數:

from functools import
reduce sentences = [The Deep Learning textbook is a resource intended to help students and practitioners enter the field of machine learning in general and deep learning in particular. ] word_count =reduce(lambda a,x:a+x.count("learning"),sentences,0) print(word_count)

>2

2、map + lambda
What is map?

map函數應用於每一個可叠代的項,返回的是一個結果list。如果有其他的可叠代參數傳進來,map函數則會把每一個參數都以相應的處理函數進行叠代處理。map()函數接收兩個參數,一個是函數,一個是序列,map將傳入的函數依次作用到序列的每個元素,並把結果作為新的list返回。

格式:map(func, seq1[, seq2...] )

Python函數式編程中的map()函數是將func作用於seq中的每一個元素,並用一個列表給出返回值。如果func為None,作用同zip()。

詳細應用code如下:

技術分享圖片

這裏需要註意的是:升級到python3的時候,map函數有一個變化那就是,如果不在map前加上list,lambda函數根本就不會執行。


在python2中,map會直接返回結果:

技術分享圖片

而再python3下面,返回的就是一個map對象:

<map object at 0x7f381112ad50>

如果要得到結果,必須用list作用於這個map對象。

3、filter + map
What is filter?

filter()函數可以對序列做過濾處理,就是說可以使用一個自定的函數過濾一個序列,把序列的每一項傳到自定義的過濾函數裏處理,並返回結果做過濾。最終一次性返回過濾後的結果。
和map()類似,filter()也接收一個函數和一個序列。和map()不同的時,filter()把傳入的函數依次作用於每個元素,然後根據返回值是True還是False決定保留還是丟棄該元素。


簡單應用如下:

技術分享圖片

這裏簡單介紹一下python內置函數小米加步槍,更詳細的介紹再會,打完收工!

Python單行函數lambda(小米)加reduce、map、filter(步槍)應用