截至到目前為止,其實(shí)我們已經(jīng)接觸了不少的python內(nèi)置函數(shù),而map函數(shù)也是其中之一,map函數(shù)是根據(jù)指定函數(shù)對(duì)指定序列做映射,在開(kāi)發(fā)中使用map函數(shù)也是有效提高程序運(yùn)行效率的辦法之一.
1 2 3 4 5 | ''' function:函數(shù)名 iterable:一個(gè)序列或者多個(gè)序列,實(shí)際上這就是function對(duì)應(yīng)的實(shí)參 ''' map(function,iterable,...) |
參數(shù):
function:函數(shù)名
iterable:一個(gè)序列或者多個(gè)序列,實(shí)際上這就是function對(duì)應(yīng)的實(shí)參
返回值:
返回值是迭代器,注意返回的結(jié)果只能迭代一次,如果需要多次使用請(qǐng)?zhí)崆氨4娼Y(jié)果并處理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂 @Blog(個(gè)人博客地址): shuopython.com @WeChat Official Account(微信公眾號(hào)):猿說(shuō)python @Github:www.github.com @File:python_map.py @Time:2019/10/7 19:48 @Motto:不積跬步無(wú)以至千里,不積小流無(wú)以成江海,程序人生的精彩需要堅(jiān)持不懈地積累! """ deffunc1(x): # 對(duì)序列中的每一個(gè)元素乘以10并返回 returnx*10 ''' map() 會(huì)根據(jù)提供的函數(shù)對(duì)指定序列做映射。 序列中的每一個(gè)元素調(diào)用 func1 函數(shù),返回新列表。 ''' x=map(func1,range(0,10)) print(list(x)) # map函數(shù)返回的迭代器只能迭代一次,迭代之后會(huì)自動(dòng)清空 print(list(x)) print("***"*20) # 將map函數(shù)返回的迭代器保存轉(zhuǎn)為list,可以多次使用 y=list(map(func1,range(0,10))) print(y) print(y) |
輸出結(jié)果:
1 2 3 4 5 | [0,10,20,30,40,50,60,70,80,90] [] ************************************************************ [0,10,20,30,40,50,60,70,80,90] [0,10,20,30,40,50,60,70,80,90] |
1 2 3 4 5 6 7 | # map函數(shù)配合匿名函數(shù)使用 x=list(map(lambdaa:a*10,range(0,10)))# 序列中的每個(gè)元素乘以10 print(x) # map函數(shù)配合匿名函數(shù)使用,匿名函數(shù)有兩個(gè)參數(shù),所以map傳參數(shù)應(yīng)該也是兩個(gè)序列 y=list(map(lambdaa,b:a+b,[1,2,3,5,6,7],[10,20,30,50,60,70]))# 兩個(gè)序列相加 print(y) |
輸出結(jié)果:
1 2 | [0,10,20,30,40,50,60,70,80,90] [11,22,33,55,66,77] |
注意:如果map()函數(shù)中的函數(shù)是多個(gè)參數(shù),那么map傳參的時(shí)候也應(yīng)該傳遞多個(gè)序列.
對(duì)比以下效率,向列表中存入一千萬(wàn)條數(shù)據(jù),比較下耗時(shí)情況:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | importtime list1=list() # 普通for循環(huán) start=time.clock() foriinrange(0,10000000): list1.append(i) print("普通for循環(huán)耗時(shí):",time.clock()-start) # 列表推導(dǎo)式 list1.clear() start=time.clock() list1=[iforiinrange(0,10000000)] print("列表推導(dǎo)式循環(huán)耗時(shí):",time.clock()-start) # map映射函數(shù) list1.clear() start=time.clock() list1=list(map(lambdax:x,range(0,10000000))) print("map映射函數(shù)耗時(shí):",time.clock()-start) |
輸出結(jié)果:
1 2 3 | 普通for循環(huán)耗時(shí):1.1869014999999998 列表推導(dǎo)式循環(huán)耗時(shí):0.5339119999999999 map映射函數(shù)耗時(shí):0.9047431000000001 |
根據(jù)測(cè)試結(jié)果看來(lái):列表推導(dǎo)式效率 > map映射函數(shù) > 普通for循環(huán)
1.map函數(shù)的參數(shù)是由函數(shù)和一個(gè)序列或者多個(gè)序列構(gòu)成;
2.map函數(shù)處理的結(jié)果是迭代器,而且只能迭代一次,如果需要多次使用,請(qǐng)?zhí)崆氨4妫?/p>
1.python 內(nèi)置函數(shù)input/eval
2.python return邏輯判斷表達(dá)式
3.匿名函數(shù)
轉(zhuǎn)載請(qǐng)注明:猿說(shuō)Python???python map函數(shù)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱:pythonmap函數(shù)(23)-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://www.rwnh.cn/article38/pcosp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站維護(hù)、品牌網(wǎng)站制作、企業(yè)網(wǎng)站制作、定制開(kāi)發(fā)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容