亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

詳解Python map函數及Python map()函數的用法

系統 1758 0

python map函數

            
map()函數
map()是 Python 內置的高階函數,它接收一個函數 f 和一個 list,并通過把函數 f 依次作用在 list 的每個元素上,得到一個新的 list 并返回。
例如,對于list [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果希望把list的每個元素都作平方,就可以用map()函數:
因此,我們只需要傳入函數f(x)=x*x,就可以利用map()函數完成這個計算:
def f(x):
 return x*x
print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
輸出結果:
[1, 4, 9, 10, 25, 36, 49, 64, 81]
注意:map()函數不改變原有的 list,而是返回一個新的 list。
利用map()函數,可以把一個 list 轉換為另一個 list,只需要傳入轉換函數。
由于list包含的元素可以是任何類型,因此,map() 不僅僅可以處理只包含數值的 list,事實上它可以處理包含任意類型的 list,只要傳入的函數f可以處理這種數據類型。
任務
假設用戶輸入的英文名字不規范,沒有按照首字母大寫,后續字母小寫的規則,請利用map()函數,把一個list(包含若干不規范的英文名字)變成一個包含規范英文名字的list:
輸入:['adam', 'LISA', 'barT']
輸出:['Adam', 'Lisa', 'Bart']
def format_name(s):
 s1=s[0:1].upper()+s[1:].lower();
 return s1;
print map(format_name, ['adam', 'LISA', 'barT'])
          

map()函數是python內置的高階函數,對傳入的list的每一個元素進行映射,返回一個新的映射之后的list

Python map()函數的用法

Python函數式編程之map()

Python中map()、filter()、reduce()這三個都是應用于序列的內置函數。

格式:

            
map(func, seq1[, seq2,…])
          

第一個參數接受一個函數名,后面的參數接受一個或多個可迭代的序列,返回的是一個集合。

Python函數編程中的map()函數是將func作用于seq中的每一個元素,并將所有的調用的結果作為一個list返回。如果func為None,作用同zip()。

1、當seq只有一個時,將函數func作用于這個seq的每個元素上,并得到一個新的seq。

讓我們來看一下只有一個seq的時候,map()函數是如何工作的。

詳解Python map函數及Python map()函數的用法_第1張圖片 ?

從上圖可以看出,函數func函數會作用于seq中的每個元素,得到func(seq[n])組成的列表。下面舉得例子來幫助我們更好的理解這個工作過程。

            
#使用lambda
>>> print map(lambda x: x % 2, range(7))
[0, 1, 0, 1, 0, 1, 0]
          

3

            
#使用列表解析
>>> print [x % 2 for x in range(7)]
[0, 1, 0, 1, 0, 1, 0]
          

4 ?

一個seq時,可以使用filter()函數代替,那什么情況不能代替呢?

2、當seq多于一個時,map可以并行(注意是并行)地對每個seq執行如下圖所示的過程:

詳解Python map函數及Python map()函數的用法_第2張圖片 ?

從圖可以看出,每個seq的同一位置的元素同時傳入一個多元的func函數之后,得到一個返回值,并將這個返回值存放在一個列表中。下面我們看一個有多個seq的例子:

            
>>> print map(lambda x , y : x ** y, [2,4,6],[3,2,1])
[8, 16, 6]
          

5 ?

如果上面我們不使用map函數,就只能使用for循環,依次對每個位置的元素調用該函數去執行。還可以使返回值是一個元組。如:

            
>>> print map(lambda x , y : (x ** y, x + y), [2,4,6],[3,2,1])
[(8, 5), (16, 6), (6, 7)]
          

7 ?

當func函數時None時,這就同zip()函數了,并且zip()開始取代這個了,目的是將多個列表相同位置的元素歸并到一個元組。如:

            
>>> print map(None, [2,4,6],[3,2,1])
[(2, 3), (4, 2), (6, 1)]
          

需要注意的是:

map無法處理seq長度不一致、對應位置操作數類型不一致的情況,這兩種情況都會報類型錯誤。如下圖:

詳解Python map函數及Python map()函數的用法_第3張圖片

3、使用map()函數可以實現將其他類型的數轉換成list,但是這種轉換也是有類型限制的,具體什么類型限制,在以后的學習中慢慢摸索吧。這里給出幾個能轉換的例子:

            
***將元組轉換成list***
>>> map(int, (1,2,3))
[1, 2, 3]
***將字符串轉換成list***
>>> map(int, '1234')
[1, 2, 3, 4]
***提取字典的key,并將結果存放在一個list中***
>>> map(int, {1:2,2:3,3:4})
[1, 2, 3]
***字符串轉換成元組,并將結果以列表的形式返回***
>>> map(tuple, 'agdf')
[('a',), ('g',), ('d',), ('f',)]
#將小寫轉成大寫
def u_to_l (s):
 return s.upper()
print map(u_to_l,'asdfd')
          

總結

以上所述是小編給大家介紹的詳解Python map函數及Python map()函數的用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 四虎成人www国产精品 | 日本欧美一区二区三区在线观看 | julia紧身裙中文字幕在线看 | 成人99国产精品一级毛片 | 亚洲久草视频 | 国产成a人片在线观看视频 国产成a人片在线观看视频99 | 亚洲国产成人九九综合 | 久久一区二区免费播放 | 免费乱人伦 | 久久精品伊人波多野结 | 国产特黄一级毛片特黄 | 有码中文字幕在线观看 | 人成在线免费视频 | 亚州一级 | 久视频免费精品6 | 极品精品国产超清自在线观看 | 久久国产免费福利永久 | 久久国产精品影院 | 99国产精品国产精品 | 久久精品视频亚洲 | 亚洲色吧| 精品欧美高清一区二区免费 | 亚洲精品综合一区二区三区在线 | 久久在线 | 99影视网 | 免费看羞羞视频的网站 | 久久精品在线播放 | 奇米影视大全 | 免费欧美日韩 | 狠狠草视频| 天天操天天干天天 | 99精彩免费观看 | 亚洲国产精品综合一区在线 | 国产热re99久久6国产精品 | 国产精品入口牛牛影视 | 久热re在线视频精品免费 | 亚洲两性 | 九九精品九九 | 看大片全色黄大色黄 | 成人免费久久精品国产片久久影院 | 成人性生活免费看 |