教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

python函數(shù)map 怎么用?[python學(xué)習(xí)]

更新時(shí)間:2019年10月31日15時(shí)35分 來(lái)源:傳智播客 瀏覽次數(shù):

Python提供了很多能實(shí)現(xiàn)各種功能的內(nèi)置函數(shù)。內(nèi)置函數(shù),就是在python中被自動(dòng)加載的函數(shù),任何時(shí)候都可以使用。下面我們介紹map函數(shù)的用法和作用:

map函數(shù)會(huì)根據(jù)提供的函數(shù)對(duì)指定的序列做映射。map函數(shù)的定義如下:
 

map(function, iterable, …)

 
在上述定義中,第一個(gè)參數(shù)function表示的是一個(gè)函數(shù)名,第二個(gè)參數(shù)iterable可以是序列、支持選代的容器或選代器。當(dāng)調(diào)用map函數(shù)時(shí),iterable中的每個(gè)元素都會(huì)調(diào)用function函數(shù),所有元素調(diào)用function函數(shù)返回的結(jié)果會(huì)保存到一個(gè)迭代器對(duì)象中?!就扑]了解:python+人工智能課程
 
這里說(shuō)明一下,在Python2中,map函數(shù)的返回值是列表list類型如果希望將選代器對(duì)象轉(zhuǎn)為列表,則可以通過(guò)list函數(shù)進(jìn)行轉(zhuǎn)換。此外,還可以使用for循環(huán)直接遍歷迭代器對(duì)象,從而取出其內(nèi)部的每個(gè)元素。示例代碼如下:
 
func = lambda  x:x+2
result = map(func, [1, 2, 3, 4, 5]
print(list(ruslt))

 
上述示例中,定義了一個(gè)匿名函數(shù)func,返回某個(gè)數(shù)加2以后的結(jié)果,接著調(diào)用map函數(shù)將[1,2,3,4,5]中的每個(gè)元素取出來(lái),作為func的參數(shù)調(diào)用func函數(shù),之后將結(jié)果轉(zhuǎn)換為列表的形式顯示。
 
程序輸出的結(jié)果為:

[3, 4, 5, 6, 7]

 
如果map函數(shù)中傳入的 unction函數(shù)帶有兩個(gè)參數(shù),那么map函數(shù)需要傳遞兩個(gè)序列例代碼如下。
 

result = map(lambda x, y: x+y, [1, 2, 3], [4,5,6])
print(list(result))
# 結(jié)果為
[5, 7, 9]


在 Python3以前,如果調(diào)用map函數(shù)時(shí)傳入的 function參數(shù)為None,則相當(dāng)于將序列中對(duì)應(yīng)位置的元素合并成為元組。示例(Phon2.7)代碼如下:
 

result = map(None, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
print result
# 輸出結(jié)果
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

 
如果兩個(gè)序列的元素個(gè)數(shù)不一致,那么元素少的序列會(huì)以None補(bǔ)齊。示例(Python 2.7)代碼如下: 【插播福利:傳智播客2019python教程全集

result = map(None, [1, 3, 5, 7, 9], [2, 4, 6])
print result
# 結(jié)果為
[(1, 2), (3, 4), (5, 6), (7, None), (9, None)]

 
在 Python3以后,當(dāng)map傳入的函數(shù)為None時(shí),就等同于zip函數(shù)(用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表)的功能,并且已經(jīng)zip函數(shù)取代了。另外,map函數(shù)無(wú)法處理兩個(gè)序列長(zhǎng)度不一致、對(duì)應(yīng)位置操作類型不一致,它們都會(huì)報(bào)錯(cuò)類型錯(cuò)誤。

本文來(lái)自:傳智播客 python+人工智能學(xué)院 python.itcast.cn
0 分享到:
和我們?cè)诰€交談!