Python 函數式編程 (4) — filter

今天進入函數是編程最後一個單元囉~filter

集滿四種函數式編程的方法,可以大大優化你的程式,提升執行的效率。
filter顧名思義,是拿來過濾出特定值。我們可以藉由條件的設定,來達成我們的需求。

下面我們先來看看利用迴圈做法要怎麼寫~

math_grade = [85, 60, 90, 77, 54, 95, 42, 78, 83, 42]
x = [i for i in math_grade if i < 60 ]
print(x)
print(len(x))
x = [i for i in math_grade if i > 60 & i < 90 ]
print(x)
print(len(x))

我們先假設上面是某次班上數學的考試成績,我們將成績利用list的形式存到math_grade中,接著利用x = [i for i in math_grade if i < 60 ]這行,在Python當中,他會自己去辨識目標存在幾個項目,並執行那麼多次的迴圈,除了執行迴圈外,也會將math_grade自動代入變數i當中。最後我們設下條件只取出math_grade中小於60分的項目存到變數x當中。
再來我們可以把x的值print出來,可以看到結果是 [54, 42, 42],利用len(x)可以找出x總共有3項。最後給大家自己想一下或是觀察一下,x = [i for i in math_grade if i > 60 & i < 90 ]最後會找出哪一些值。

最我們來看看今天的主角filter的寫法吧~~

y = filter(lambda a: a < 60 , math_grade)
y = list(y)
print(list(y))
print(len(list(y)))
y = filter(lambda a: a > 60 & a< 60, math_grade)
y = list(y)
print(list(y))
print(len(list(y)))

這邊稍微不一樣的地方在我們需要y = list(y)這一行來將y轉換成list的形式。其他執行出來的結果和使用 for 迴圈是一模一樣的喔~

看到這邊我們就可以利用上面的兩個方法來找出list中的特定值,除此之外利用filter,除了可以精簡還能加速程式的效率外。最後大家要記得他的其他三個好兄弟 lambdamapreduce阿~~

 

 

 

 

 

Facebook Comments

發表迴響