python 中的filter, map, reduce方法解釋

python 中的filtermap, reduce方法解釋:

filter:

filter方法調用:

resultlst = filter(func, seq)

@param func: 可調用對象,接受seq中的元素作爲參數

@param seq: 可迭代對象,其中每個元素都要被傳入func執行一次;

filter的作用:

seq可迭代序列或者對象的每一個元素調用一次func,如果func返回值爲True,則將該元素插入返回結果列表。反之,則丟棄;

例如:

a = [1,2,3,4,5]

result = filter(lambda x : x > 3, a)

則返回結果是:[4,5]

 

注意,filterfunc可調用對象必須返回一個具有“bool屬性”的值。所謂具有bool屬性,即是指該返回值要能夠與bool真值進行比較。在python中,幾乎所有對象都能夠判斷真假。filter方法本身返回的是seq元素的列表子集。並非func返回的結果,func只是告訴filterseq中怎麼去選取元素構成列表返回(也就是能夠使func調用對象返回bool真值的那些元素)

 

map:

map方法調用:

map(func, seq)

@param func: 可調用對象,接受seq中的元素作爲參數;

@param seq: 可迭代對象。其中每個迭代元素都會被傳入map函數執行一次;

map方法的作用:

seq可迭代對象中的每個元素,作爲func參數調用一次, 並把func結果添加到返回列表中;

例如:

a = [1,2, 3,4,5]

resultlst = map(lambda x : x + 1a)

返回結果是:[2,3,4,5,6]

 

假如我們使用filter中同樣的lambda表達式來調用a中的元素,即:

a = [1,2, 3,4,5]

resultlst = map(lambda x : x > 3a)

返回結果是:[False,False,Flase,True,True]

 

這就是說,map函數對seq中的每個元素,將一定會有一個與之對應的返回值。這個返回值就是將該元素傳遞給func後,由func執行返回的結果。

 

 

reduce:

reduce方法調用:

reduce(func, seq [, init])

@param func: 特殊的可調用對象。所謂特殊,是該可調用對象要接受兩個參數。

@param seq: 可迭代對象,同樣,該對象中的每個元素將會被func處理一次;

@param init: 初始值。

reduce方法的作用:

seq中的從左到右的每兩個元素,調用func。然後將本次結果傳遞到下一次調用。

例如:

a = [1,2,3,4,5]

reduce(lambda x, y : x +y, a)

則返回值爲:15

加入我們設定init的值,即:

a = [1,2,3,4,5]

reduce(lambda x, y : x +y, a3)

則返回值爲:18

 

注意:傳遞給reducefunc,必須要能接受兩個參數。並返回一個結果。這個結果將會是傳遞給func進行下次一調用;上面的例子,調用過程是:

1,func(1, 2) 返回 x1

2,func(x1, 3) 返回 x2

3,func(x2, 4) 返回 x3

…...

其實,通過,reducefunc的設計,reduce可以完成mapfilter的功能

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章