淺析python中的map函數(shù)

Applyfunctionto every item ofiterableand return a list of the results. If additionaliterablearguments are passed,functionmust take that many arguments and is applied to the items from all iterables in parallel. If one iterable is shorter than another it is assumed to be extended withNoneitems. IffunctionisNone, the identity function is assumed; if there are multiple arguments,map()returns a list consisting of tuples containing the corresponding items from all iterables (a kind of transpose operation). Theiterablearguments may be a sequence or any iterable object; the result is always a list.

一點一點看:

1、對可迭代函數(shù)'iterable'中的每一個元素應用‘function’方法涮阔,將結果作為list返回吃型。

來個例子:

>>> def add100(x):

...? ? return x+100

...

>>> hh = [11,22,33]

>>> map(add100,hh)

[111, 122, 133]

就像文檔中說的:對hh中的元素做了add100,返回了結果的list。

2悦陋、如果給出了額外的可迭代參數(shù),則對每個可迭代參數(shù)中的元素‘并行’的應用‘function’服傍。(翻譯的不好吹零,這里的關鍵是‘并行’)

>>> def abc(a, b, c):

...? ? return a*10000 + b*100 + c

...

>>> list1 = [11,22,33]

>>> list2 = [44,55,66]

>>> list3 = [77,88,99]

>>> map(abc,list1,list2,list3)

[114477, 225588, 336699]

看到并行的效果了吧!在每個list中,取出了下標相同的元素伸辟,執(zhí)行了abc()。

3静稻、如果'function'給出的是‘None’振湾,自動假定一個‘identity’函數(shù)(這個‘identity’不知道怎么解釋押搪,看例子吧)

>>> list1 = [11,22,33]

>>> map(None,list1)

[11, 22, 33]

>>> list1 = [11,22,33]

>>> list2 = [44,55,66]

>>> list3 = [77,88,99]

>>> map(None,list1,list2,list3)

[(11, 44, 77), (22, 55, 88), (33, 66, 99)]

用語言解釋好像有點拗口续语,例子應該很容易理解疮茄。

介紹到這里應該差不多了吧!不過還有東西可以挖掘:

stackoverflow上有人說可以這樣理解map():

map(f, iterable)

基本上等于:

[f(x) for x in iterable]

趕快試一下:

>>> def add100(x):

...? ? return x + 100

...

>>> list1 = [11,22,33]

>>> map(add100,list1)

[101, 102, 103]

>>> [add100(i) for i in list1]

[101, 102, 103]

哦,輸出結果一樣躯畴。原來map()就是列表推導式啊嚷缭!要是這樣想就錯了:這里只是表面現(xiàn)象!再來個例子看看:

>>> def abc(a, b, c):

...? ? return a*10000 + b*100 + c

...

>>> list1 = [11,22,33]

>>> list2 = [44,55,66]

>>> list3 = [77,88,99]

>>> map(abc,list1,list2,list3)

[114477, 225588, 336699]

這個例子我們在上面看過了,若是用列表推導應該怎么寫呢百侧?我想是這樣的:

[abc(a,b,c) for a in list1 for b in list2 for c in list3]

但是看到結果,發(fā)現(xiàn)根本不是這么回事:

[114477, 114488, 114499, 115577, 115588, 115599, 116677, 116688, 116699, 224477, 224488, 224499, 225577, 225588, 225599, 226677, 226688, 226699, 334477, 334488, 334499, 335577, 335588, 335599, 336677, 336688, 336699]

這便是上面列表推導的結果辛润。怎么會這么多灵迫?當然了列表推導可以這么寫:

result = []

for a in list1:

for b in list2:

for c in list3:

result.append(abc(abc))

原來如此瀑粥,若是將三個list看做矩陣的話:

112233

445566

778899

map()只做了列上面的運算,而列表推導(也就是嵌套for循環(huán))做了笛卡爾乘積修噪。

OK,就寫到這里脏款。僅個人理解,如有差錯請指正,多謝痒谴!

上面的例子有些來自于這里:

http://infohost.nmt.edu/tcc/help/pubs/python/web/map-function.html

http://stackoverflow.com/questions/10973766/understanding-the-map-function-python

原網(wǎng)頁地址:https://my.oschina.net/zyzzy/blog/115096#0-youdao-...

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蓖墅,隨后出現(xiàn)的幾起案子库倘,更是在濱河造成了極大的恐慌临扮,老刑警劉巖论矾,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杆勇,居然都是意外死亡贪壳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門蚜退,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闰靴,“玉大人彪笼,你說我怎么就攤上這事÷烨遥” “怎么了配猫?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長杏死。 經(jīng)常有香客問我泵肄,道長,這世上最難降的妖魔是什么淑翼? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任腐巢,我火速辦了婚禮,結果婚禮上玄括,老公的妹妹穿的比我還像新娘冯丙。我一直安慰自己,他們只是感情好遭京,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布胃惜。 她就那樣靜靜地躺著,像睡著了一般洁墙。 火紅的嫁衣襯著肌膚如雪蛹疯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天热监,我揣著相機與錄音捺弦,去河邊找鬼。 笑死孝扛,一個胖子當著我的面吹牛列吼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苦始,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼寞钥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了陌选?” 一聲冷哼從身側響起理郑,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咨油,沒想到半個月后您炉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡役电,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年赚爵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡冀膝,死狀恐怖唁奢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窝剖,我是刑警寧澤麻掸,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站赐纱,受9級特大地震影響论笔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜千所,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一狂魔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧淫痰,春花似錦最楷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至火俄,卻和暖如春犯建,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瓜客。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工适瓦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谱仪。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓玻熙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疯攒。 傳聞我的和親對象是個殘疾皇子嗦随,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容