Python高階函數(shù)map()?簡(jiǎn)介和使用詳解
簡(jiǎn)介:
格式:
map(function,iterable,……)
參數(shù)說明:
function:是表示函數(shù)功能
iterable:是表示可迭代對(duì)象 ,后面可以跟一個(gè)或者多個(gè)可迭代對(duì)象
功能:這個(gè)函數(shù)可以實(shí)現(xiàn)把可迭代對(duì)象中的每個(gè)數(shù)據(jù)依次帶入功能函數(shù)(function)中
返回值:注意map() 函數(shù)并不會(huì)改變?cè)瓉淼臄?shù)據(jù),而是生成一個(gè)新的map對(duì)象(本質(zhì)是一個(gè)迭代器),map對(duì)象第一個(gè)參數(shù)是作用功能,第二個(gè)是被功能函數(shù)作用可迭代對(duì)象,當(dāng)我們?nèi)ネㄟ^列表(list)進(jìn)行強(qiáng)制轉(zhuǎn)換會(huì)觸發(fā)函數(shù)的作用。
其他信息:這個(gè)函數(shù)在Python2的返回值是直接返回list類型,而在Python3是返回一個(gè)map類型,但是map類型要去通過list() 轉(zhuǎn)換才可以輸出結(jié)果
map() 函數(shù)是Python中的內(nèi)置函數(shù),這個(gè)函數(shù)又叫做映射函數(shù),其實(shí)里面具有一個(gè)迭代器的功能,會(huì)依次遍歷可迭代對(duì)象進(jìn)行相關(guān)的操作。
help(map) 查看這個(gè)函數(shù)的相關(guān)信息

示例:
示例(1):輸出map()函數(shù)返回值(迭代器)結(jié)果
def fun(n):
return n**2
if __name__=='__main__': #判斷是不是執(zhí)行文件
li=[x for x in range(1,12)]
re=map(fun,li)
print(type(re))
print(list(re))
print(tuple(re))
#輸出結(jié)果:<class 'map'>
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121]
# ()這里可以看出,re是一個(gè)map類型,當(dāng)我們用list去轉(zhuǎn)換re的類型,可以看到輸出結(jié)果,但是如果我們用tuple去轉(zhuǎn)換類型卻輸出不了結(jié)果,所以map類型只能通過列表類型去轉(zhuǎn)換輸出結(jié)果。
def fun(n):
return n**2
if __name__=='__main__':
li=[x for x in range(1,12)]
re=map(fun,li)
for i in re:
print(i,end=' ')
#輸出結(jié)果:1 4 9 16 25 36 49 64 81 100 121 這里可以看出,map的返回值是一個(gè)迭代器,我們可以去通過循環(huán)依次輸出結(jié)果,在輸出的時(shí)候會(huì)觸發(fā)fun() 函數(shù)的作用,fun() 函數(shù)會(huì)依次作用給每一個(gè)迭代對(duì)象,然后輸出
示例(2):與循環(huán)對(duì)比
那這里就有人會(huì)問了,為什么不用循環(huán)去實(shí)現(xiàn)這種功能呢?循環(huán)不也可以嗎?當(dāng)然可以,只是效率沒有map() 函數(shù)高,而且沒有用map() 這么秀~
def fun(n):
return n**2
if __name__=='__main__':
li=[x for x in range(1,12)]
re=[]
for i in li:
num=fun(i)
re.append(num)
print(re)
#輸出結(jié)果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121]示例(3):字符串轉(zhuǎn)列表
if __name__=='__main__':
str1='123456'
result=map(int,str1)
print(list(result))
#輸出結(jié)果:[1, 2, 3, 4, 5, 6]示例(4):元組轉(zhuǎn)列表
if __name__=='__main__':
tu=(x for x in range(1,11))
result=map(str,tu)
print(list(result))
#輸出結(jié)果:['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']示例(5):提取字典的鍵key,通過函數(shù)作用放入到列表當(dāng)中
def fun(n):
return n*2
if __name__=='__main__':
d={1:'good',2:'nice',3:'wao',4:'bless'}
result=map(fun,d)
print(list(result))
#輸出結(jié)果:[2, 4, 6, 8]示例(6):與lambda函數(shù)結(jié)合
1.
if __name__=='__main__':
li=[x for x in range(-7,8) if x%2==0]
result=map(lambda y:y**2+y,li)
print(list(result))
#輸出結(jié)果:[30, 12, 2, 0, 6, 20, 42]2.多個(gè)可迭代對(duì)象
if __name__=='__main__':
li=[1,3,5,7]
lil=[2,4,6,8]
result=map(lambda x,y:x+y,li,lil)
print(list(result))
#輸出結(jié)果:[3, 7, 11, 15]if __name__=='__main__':
li=[1,3,5,7]
lil=[2,4,6]
result=map(lambda x,y:x+y,li,lil)
print(list(result))
#輸出結(jié)果:[3, 7, 11]這里說明一下:如果是對(duì)兩個(gè)或者兩個(gè)以上可迭代對(duì)象進(jìn)行處理的話,是根據(jù)序列的下標(biāo)一一對(duì)應(yīng)處理,比如上面的例子,是按照1+2,3+4,5+6,7+8依次輸出結(jié)果,但是第二個(gè)例子沒有8,故無法對(duì)下標(biāo)為 3 的位置進(jìn)行處理,所以輸出結(jié)果只有三個(gè)。
3.多個(gè)可迭代對(duì)象返回元組形式
if __name__=='__main__':
li=[1,2,3,4]
lil=[5,6,7,8]
result=map(lambda x,y:(y,x),li,lil)
print(list(result))
#輸出結(jié)果:[(5, 1), (6, 2), (7, 3), (8, 4)]4.元組與列表共同作用
if __name__=='__main__':
li=[a for a in range(0,4)]
tu=(b for b in range(4,8))
result=map(lambda x,y:(x**2,y-5),li,tu)
print(list(result))
#輸出結(jié)果:[(0, -1), (1, 0), (4, 1), (9, 2)]這里可以看出,iterable……可以是列表或者元組,只要有下標(biāo)且對(duì)應(yīng)的都可以進(jìn)行參與運(yùn)算
示例(7):math函數(shù)作為function
import math
if __name__=='__main__':
li=[a for a in range(-5,4)]
result=map(lambda x:round(math.sin(x),2),li) #保留兩位小數(shù)
print(list(result))
#輸出結(jié)果:[0.96, 0.76, -0.14, -0.91, -0.84, 0.0, 0.84, 0.91, 0.14]到此這篇關(guān)于Python高階函數(shù)map() 簡(jiǎn)介和使用詳解的文章就介紹到這了,更多相關(guān)Python 高階函數(shù)map使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python調(diào)用GPU算力的實(shí)現(xiàn)步驟
本文介紹了在Python中調(diào)用GPU算力的基本步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
Pytorch技巧:DataLoader的collate_fn參數(shù)使用詳解
今天小編就為大家分享一篇Pytorch技巧:DataLoader的collate_fn參數(shù)使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
python利用itertools生成密碼字典并多線程撞庫(kù)破解rar密碼
這篇文章主要介紹了python利用itertools生成密碼字典并多線程撞庫(kù)破解rar密碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
教你使用Sublime text3搭建Python開發(fā)環(huán)境及常用插件安裝另分享Sublime text3最新激活注冊(cè)碼
這篇文章主要介紹了使用Sublime text 3搭建Python開發(fā)環(huán)境及常用插件安裝,并提供了最新Sublime text 3激活注冊(cè)碼需要的朋友可以參考下2020-11-11
python爬蟲之利用Selenium+Requests爬取拉勾網(wǎng)
這篇文章主要介紹了python爬蟲之利用Selenium+Requests爬取拉勾網(wǎng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python爬蟲的小伙伴們有很好的幫助,需要的朋友可以參考下2021-04-04
python實(shí)例小練習(xí)之Turtle繪制南方的雪花
Turtle庫(kù)是Python語言中一個(gè)很流行的繪制圖像的函數(shù)庫(kù),想象一個(gè)小烏龜,在一個(gè)橫軸為x、縱軸為y的坐標(biāo)系原點(diǎn),(0,0)位置開始,它根據(jù)一組函數(shù)指令的控制,在這個(gè)平面坐標(biāo)系中移動(dòng),從而在它爬行的路徑上繪制了圖形2021-09-09
基于python實(shí)現(xiàn)鼠標(biāo)實(shí)時(shí)坐標(biāo)監(jiān)測(cè)
這篇文章主要給大家介紹了如何基于python實(shí)現(xiàn)鼠標(biāo)實(shí)時(shí)坐標(biāo)監(jiān)測(cè),文章通過代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-11-11

