python如何理解map,reduce,filter?
通俗的說..都是用在一堆數據(比如一個列表)上..
map是用同樣方法把所有數據都改成別的..字面意思是映射..
比如把列表的每個數都換成其平方..
reduce是用某種方法依次把所有數據丟進去最後得到一個結果..字面意思是化簡..
比如計算一個列表所有數的和的過程,就是維持一個部分和然後依次把每個數加進去..
filter是篩選出其中滿足某個條件的那些數據..字面意思是過濾..
比如挑出列表中所有奇數..
&>&>&> map(lambda x:x*x,[0,1,2,3,4,5,6])
[0, 1, 4, 9, 16, 25, 36]
&>&>&> reduce(lambda x,y:x+y,[0,1,2,3,4,5,6])
21
&>&>&> filter(lambda x:x1,[0,1,2,3,4,5,6])
[1, 3, 5]
嘛..如果題主這麼問是因為覺得有點混淆想要區分的話..
簡單來講..都是處理一堆數據..然後看輸出數據的數量..
原先有多少map完後還是有多少..
原先不管有多少reduce後都只剩一個結果..
filter完則是原先的一部分,也許全都還在,也許全都沒了,反正個數不定..但是剩下的那些也都是原先有的..
這些概念其實來自於Haskell,建議你有空學習一下Haskell,到時候就會明白了。
map就是對列表(迭代器, 生成器等)每一個元素做某個事情.
比如你有7個葫蘆娃, 你讓每個葫蘆娃 調戲一下 蛇精. 這個就是map, 攜程代碼就是
map(lambda x: 調戲蛇精, 葫蘆娃列表)
reduce是對列表(迭代器, 生成器等)的每個元素應用某個規則, 合併成一個值
比如你還是有7個葫蘆娃, 你覺得一個人帶7個娃太累了, 於是讓它合併成一個金剛葫蘆娃, 這個就是reduce, 寫成代碼就是
reduce(lambda x,y: 合併, 葫蘆娃列表)
filter, 就是對列表(...)的每個元素, 按照某個規則予以判斷, 把判斷結果為正的留下.
比如你依然有7個葫蘆娃, 你看著陽台上的一盆葫蘆的盆栽快枯萎了, 想著要給它澆水. 這時, 你需要水娃給這個盆栽吐吐口水, 於是你做了一個Filter, 把水娃給叫過來來澆水. 寫成代碼就是:
filter(lambda x: 會吐口水的娃, 葫蘆娃列表)
map reduce filter都是高階函數,可以接受某個函數作為參數
map是映射,ruduce是歸納,filter是過濾
看看這個你就懂了:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317852443934a86aa5bb5ea47fbbd5f35282b331335000filter在下一章推薦閱讀:
※快速計算斐波那契數列fibonacci(n)
※Pandas 教程——電影數據是乾淨的嗎(2)
※Python從零開始系列連載(16)——Python程序的基本控制流程(下)
※【Python3網路爬蟲開發實戰】1.4.1-MySQL的安裝
※Python小白想爬取網路數據?