python有幾個(gè)內(nèi)置的函數(shù)很有意思:map/filter/reduce,都是對(duì)一個(gè)集合進(jìn)行處理,filter很容易理解用于過濾,map用于映射,reduce用于歸并. 是python列表方法的三架馬車。 * filter() 函數(shù): filter 函數(shù)的功能相當(dāng)于過濾器。調(diào)用一個(gè)布爾函數(shù)bool_func來迭代遍歷每個(gè)seq中的元素;返回一個(gè)使bool_seq返回值為true的元素的序列。 >>>a=[1,2,3,4,5,6,7] >>>b=filter(lambda x:x>5, a) >>>print b >>>[6,7] 如果filter參數(shù)值為None,就使用identity()函數(shù),list參數(shù)中所有為假的元素都將被刪除。如下所示: >>>a=[0,1,2,3,4,5,6,7] >>>b=filter(None, a) >>>print b >>>[1,2,3,4,5,6,7] * map() 函數(shù): map函數(shù)func作用于給定序列的每個(gè)元素,并用一個(gè)列表來提供返回值。 >>>map(lambda x:x+3, a) #這里的a同上 >>>[3,4,5,6,7,8,9,10] #另一個(gè)例子 >>>a=[1,2,3] >>>b=[4,5,6] >>>map(lambda x,y:x+y, a,b) >>>[5,7,9] * reduce() 函數(shù): reduce函數(shù),func為二元函數(shù),將func作用于seq序列的元素,每次攜帶一對(duì)(先前的結(jié)果以及下一個(gè)序列的元素),連續(xù)的將現(xiàn)有的結(jié)果和下一個(gè)值作用在獲得的隨后的結(jié)果上,最后減少我們的序列為一個(gè)單一的返回值。 >>>a = [1,2,3,4,5] >>>reduce(lambda x,y:x+y,a) 15 |
|