摘要:例例如文檔中所說,函數將方法映射到中的每一個元素,即對中的每個元素調用方法,并返回結果的。需要注意的是函數可以多個可迭代參數,前提是方法能夠接收這些參數。即在每個中,取出下標相同的元素,執行。最重要的是,如果不在前加上,函數根本就不會執行
先來看一下官方文檔:
map(function, iterable, ...)Apply function to every item of iterable and return a list of the results. If additional iterable arguments are passed, function must take that many arguments and is applied to the items from all in parallel. If one iterable is shorter than another it is assumed to be extended withNoneitems. If function isNone, 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). The iterable arguments may be a sequence or any iterable object; the result is always a list.
1.對可迭代函數"iterable"中的每一個元素應用‘function’方法,將結果作為list返回。
例:
例1: >>> def add(x): ... return x+1 ... >>> aa = [11,22,33] >>> map(add,aa) [12, 23, 34]
如文檔中所說,map函數將add方法映射到aa中的每一個元素,即對aa中的每個元素調用add方法,并返回結果的list。需要注意的是map函數可以多個可迭代參數,前提是function方法能夠接收這些參數。否則將報錯。例子如下:
如果給出多個可迭代參數,則對每個可迭代參數中的元素‘平行’的應用‘function’。即在每個list中,取出下標相同的元素,執行abc()。
例2: >>> 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] >>> a = map(ord,"abcd") >>> list(a) [97, 98, 99, 100] >>> a = map(ord,"abcd","efg") # 傳入兩個可迭代對象,所以傳入的函數必須能接收2個參數,ord不能接收2個參數,所以報錯 >>> list(a) Traceback (most recent call last): File "", line 1, in list(a) TypeError: ord() takes exactly one argument (2 given) >>> def f(a,b): return a + b
當傳入多個可迭代對象時,且它們元素長度不一致時,生成的迭代器只到最短長度。
>>> a = map(f,"abcd","efg") # 選取最短長度為3 >>> list(a) ["ae", "bf", "cg"]
2.如果"function"給出的是‘None’,則會自動調用一個默認函數,請看例子:
例3: >>> 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)]
3.最后一點需要注意的是,map()在python3和python2中的差異(特別是從py2轉到py3的使用者很可能遇到):
在python2中,map會直接返回結果,例如:
map(lambda x: x, [1,2,3])
可以直接返回
[1,2,3]
但是在python3中, 返回的就是一個map對象:
如果要得到結果,必須用list作用于這個map對象。
最重要的是,如果不在map前加上list,lambda函數根本就不會執行
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44671.html
摘要:另外,這些中的每一個都是純函數,有返回值。例如,如果要計算整數列表的累積乘,或者求和等等基礎語法參數是連續作用于每一個元素的方法,新的參數為上一次執行的結果,為被過濾的可迭代序列返回值最終的返回結果在中,是一個內置函數。 簡潔的內置函數 大家好,我又回來了,今天我想和大家分享的是Python非常重要的幾個內置函數:map,filter,reduce, zip。它們都是處理序列的便捷函數...
摘要:用匿名函數有個好處,因為函數沒有名字,不必擔心函數名沖突。和不同的是,把傳入的函數依次作用于每個元素,然后根據返回值是還是決定保留還是丟棄該元素。字符串給出當前平臺使用的行終止符。程序中間的退出,為正常退出。 列表生成式 函數的參數類型 lambda函數 map, reduce, filter, sorted函數 eval, exec, join, zip函數 itertools中的...
小編寫這篇文章的一個主要目的,主要是給大家去做一個介紹,介紹的內容涉及到Python Map函數的一些使用方法,還會涉及到一些具體的保姆級的一些相關使用教程,具體的內容,下面就給大家詳細解答下。 眾所周知,我們在使用python的時候,會大大的提高我們的一個工作效率,對我們工作效率的提高有一個本質的提升。 那么,本文會給大家統一的做個解答,解答的內容還是涉及到相關的Python Map函數...
摘要:序列不是特定的抽象數據類型,而是不同類型共有的一組行為。不像抽象數據類型,我們并沒有闡述如何構造序列。這兩個選擇器和一個構造器,以及一個常量共同實現了抽象數據類型的遞歸列表。 2.3 序列 來源:2.3 Sequences 譯者:飛龍 協議:CC BY-NC-SA 4.0 序列是數據值的順序容器。不像偶對只有兩個元素,序列可以擁有任意(但是有限)個有序元素。 序列在計算機科學中...
摘要:在中運行不同的實驗似乎比試圖在中進行這種探索性的操作更有效。理論上,我們可以在中做很多的探索。我們如何繼續第一步是獲取格式的原始數據。這些列將包含來自使用該代理鍵的一個請求的一行數據。這是重構的另一部分。數據的最終顯示保持完全分離。 歡迎大家前往騰訊云+社區,獲取更多騰訊海量技術實踐干貨哦~ 這里有一些技巧來處理日志文件提取。假設我們正在查看一些Enterprise Splunk提取。...
閱讀 1877·2021-11-12 10:36
閱讀 2309·2021-09-01 10:29
閱讀 2337·2019-08-30 15:56
閱讀 1015·2019-08-30 12:56
閱讀 2342·2019-08-26 13:58
閱讀 2264·2019-08-23 18:38
閱讀 1486·2019-08-23 18:32
閱讀 2103·2019-08-23 16:53