python有幾個內建的函式很有意思:map/filter/reduce,都是對一個集合進行處理,filter很容易理解用於過濾,map用於對映,reduce用於歸併. 是python列表方法的三架馬車。
filter() 函式:
filter 函式的功能相當於過濾器。呼叫一個布林函式bool_func來迭代遍歷每個seq中的元素;返回一個使bool_seq返回值為true的元素的序列。
>>>a=[1,2,3,4,5,6,7] >>>b=filter(lambda x:x>5, a) >>>print b >>>[6,7] 如果filter引數值為None,就使用identity()函式,list引數中所有為假的元素都將被刪除。如下所示: >>>a=[0,1,2,3,4,5,6,7] >>>b=filter(None, a) >>>print b >>>[1,2,3,4,5,6,7]
map() 函式:
map函式func作用於給定序列的每個元素,並用一個列表來提供返回值。
>>>map(lambda x:x+3, a) #這裡的a同上 >>>[3,4,5,6,7,8,9,10] #另一個例子 >>>a=[1,2,3] >>>b=[4,5,6] >>>map(lambda x,y:x+y, a,b) >>>[5,7,9]
reduce() 函式:
reduce函式,func為二元函式,將func作用於seq序列的元素,每次攜帶一對(先前的結果以及下一個序列的元素),連續的將現有的結果和下一個值作用在獲得的隨後的結果上,最後減少我們的序列為一個單一的返回值。
>>>a = [1,2,3,4,5] >>>reduce(lambda x,y:x+y,a) 15