摘要:會依次將中的數據傳遞到中,根據返回的或者,留下或者拋棄這個值。而對于字符串,則是根據字符串對應的碼表進行排序。同時也是一個高階函數,可以實現自定義的排序方式。
map/reduce是一種編程思想,在各個領域都有它的實踐。
網上有一個簡單的例子解釋map/reduce。
比如說你需要數一下某一個圖書館中有多少本藏書。
最傻瓜的做法就是排一個人從頭數到尾。這樣速度慢,低效。
另一種方法就是先將圖書館劃分成幾個區域,派多個人,每人負責一個區域去數書架上的藏書數。這就是map.
當大家都把各自的數完了,一個人負責加和所有的圖書數。這就是reduce。
這里有幾篇文章可能會幫助理解。http://blog.jobbole.com/1321/ 和
http://blog.csdn.net/lifuxian...
python內置了map和reduce函數。
map 函數map函數接受兩個參數,第一個是函數f,第二個是序列。map函數的作用就是將傳入的函數作用在序列的每一個元素上,并放回一個新的序列。所以函數f接收一個參數。
map其實是把運算規則抽象化了,是一個高階函數。
reduce函數也接受兩個參數,第一個是函數f,第二個是序列。函數f接收兩個參數。
f先從序列開端取兩個元素,計算得一個結果。該結果再與序列第三個參數作為兩個參數代入函數f計算得一個結果,如此不斷重復。
filter(func,list)
filter會依次將list中的數據傳遞到func中,根據func返回的True或者False,留下或者拋棄這個值。
例如
// 定義一個函數,判斷是否是int def is_int(x): return isinstance(x, int) l = [1, 2, 3, "100", "yes"] print filter(is_int, l)sorted
python可以用sorted函數實現默認的排序。對于數字,則根據數字大小進行排序。而對于字符串,則是根據字符串對應的Ascii碼表進行排序。
同時sorted也是一個高階函數,可以實現自定義的排序方式。
例如我們需要實現一個不區分大小寫的字符排序方式,則可以先將所有的字符轉化成小寫,然后再比較。
實現的自定義比較函數必須是接收兩個參數,三種返回結果:1,0,-1.
def my_compare(x, y): x = x.lower() y = y.lower() if x < y: return -1 elif x == y: return 0 else: return 1 print sorted(["a","B","c","d"],my_compare) #打印結果 ["a", "B", "c", "d"]
若你希望改成逆序,則調換一下返回值即可。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38244.html
摘要:用匿名函數有個好處,因為函數沒有名字,不必擔心函數名沖突。和不同的是,把傳入的函數依次作用于每個元素,然后根據返回值是還是決定保留還是丟棄該元素。字符串給出當前平臺使用的行終止符。程序中間的退出,為正常退出。 列表生成式 函數的參數類型 lambda函數 map, reduce, filter, sorted函數 eval, exec, join, zip函數 itertools中的...
摘要:貢獻者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節拆開,再按照知識點合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻者:飛龍版...
摘要:學習筆記七數學形態學關注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學習筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現代方法基于區域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個提問: pyth...
閱讀 742·2021-07-25 21:37
閱讀 3654·2019-08-30 15:55
閱讀 2572·2019-08-30 15:54
閱讀 1718·2019-08-30 15:44
閱讀 3123·2019-08-30 15:44
閱讀 859·2019-08-30 15:43
閱讀 1024·2019-08-29 15:36
閱讀 3038·2019-08-29 10:58