国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-01-04 16:22:00
字體:
來源:轉載
供稿:網友

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*xprint 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()函數,map函數的用法 

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

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

python,map()函數,map函數的用法

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

python,map()函數,map函數的用法 

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

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

python,map()函數,map函數的用法 

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

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

python,map()函數,map函數的用法 

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

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

python,map()函數,map函數的用法 

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

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

需要注意的是:

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

python,map()函數,map函數的用法

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()函數的用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德阳市| 罗源县| 霍林郭勒市| 梁河县| 太湖县| 临武县| 舒兰市| 镇康县| 中卫市| 肃宁县| 巩义市| 武陟县| 胶州市| 桃源县| 翁源县| 南丰县| 理塘县| 资溪县| 忻州市| 南充市| 永新县| 甘泉县| 调兵山市| 射洪县| 招远市| 江永县| 南华县| 邯郸县| 保康县| 饶平县| 镇安县| 玉山县| 和田县| 普兰县| 凤山县| 汕尾市| 康定县| 泸水县| 隆子县| 民和| 喀什市|