map()是 Python 內(nèi)置的高階函數(shù),它接收一個(gè)函數(shù) f 和一個(gè) list,并通過(guò)把函數(shù) f 依次作用在 list 的每個(gè)元素上,得到一個(gè)新的 list 并返回。
創(chuàng)新互聯(lián)建站成立與2013年,先為肥西等服務(wù)建站,肥西等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為肥西企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
你傳入的 '12345'字符串也是屬于列表。每個(gè)元素就是 ['1','2','3','4','5']
所以第一個(gè)輸出的無(wú)可厚非。
第二個(gè)報(bào)錯(cuò)其實(shí)原因就是因?yàn)槟愕膁igits里面沒(méi)有'1'這個(gè)key,所以會(huì)報(bào)錯(cuò)。
根本不會(huì)出現(xiàn)'12345'這個(gè)key的。如果想出現(xiàn),就把代碼修改下
def?char(s):
digits?=?{'0':?0,?'12345':?1,?'2':?2,'3':?3,?'4':?4,?'5':?5,?'6':?6,'7':?7,?'8':?8,?'9':?9}
return?digits[s]
list(map(char,['12345','2','3','4','5']))
map是python內(nèi)置函數(shù),會(huì)根據(jù)提供的函數(shù)對(duì)指定的序列做映射。
_ap()函數(shù)的格式是:map(function,iterable,...)
這幾個(gè)函數(shù)在 Python 里面被稱(chēng)為高階函數(shù),本文主要學(xué)習(xí)它們的用法。
filter 函數(shù)原型如下:
第一個(gè)參數(shù)是判斷函數(shù)(返回結(jié)果需要是 True 或者 False),第二個(gè)為序列,該函數(shù)將對(duì) iterable 序列依次執(zhí)行 function(item) 操作,返回結(jié)果是過(guò)濾之后結(jié)果組成的序列。
簡(jiǎn)單記憶:對(duì)序列中的元素進(jìn)行篩選,獲取符合條件的序列。
返回結(jié)果為: ,使用 list 函數(shù)可以輸入序列內(nèi)容。
map 函數(shù)原型如下:
該函數(shù)運(yùn)行之后生成一個(gè) list,第一個(gè)參數(shù)是函數(shù)、第二個(gè)參數(shù)是一個(gè)或多個(gè)序列;
下述代碼是一個(gè)簡(jiǎn)單的測(cè)試案例:
上述代碼運(yùn)行完畢,得到的結(jié)果是: 。使用 print(list(my_new_list)) 可以得到結(jié)果。
map 函數(shù)的第一個(gè)參數(shù),可以有多個(gè)參數(shù),當(dāng)這種情況出現(xiàn)后,后面的第二個(gè)參數(shù)需要是多個(gè)序列。
map 函數(shù)解決的問(wèn)題:
reduce 函數(shù)原型如下:
第一個(gè)參數(shù)是函數(shù),第二個(gè)參數(shù)是序列,返回計(jì)算結(jié)果之后的值。該函數(shù)價(jià)值在于滾動(dòng)計(jì)算應(yīng)用于列表中的連續(xù)值。
測(cè)試代碼如下:
最終的結(jié)果是 6,如果設(shè)置第三個(gè)參數(shù)為 4,可以運(yùn)行代碼查看結(jié)果,最后得到的結(jié)論是,第三個(gè)參數(shù)表示初始值,即累加操作初始的數(shù)值。
簡(jiǎn)單記憶:對(duì)序列內(nèi)所有元素進(jìn)行累計(jì)操作。
zip 函數(shù)原型如下:
zip 函數(shù)將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表。
如果各個(gè)迭代器的元素個(gè)數(shù)不一樣,則返回列表長(zhǎng)度與最短的對(duì)象相同,利用星號(hào)( * )操作符,可以將元組解壓為列表。
測(cè)試代碼如下:
展示如何利用 * 操作符:
輸出結(jié)果如下:
簡(jiǎn)單記憶:zip 的功能是映射多個(gè)容器的相似索引,可以方便用于來(lái)構(gòu)造字典。
enumerate 函數(shù)原型如下:
參數(shù)說(shuō)明:
該函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在 for 循環(huán)當(dāng)中。
測(cè)試代碼如下:
返回結(jié)果為: 。
本文涉及的函數(shù)可以與 lambda 表達(dá)式進(jìn)行結(jié)合,能大幅度提高編碼效率。最好的學(xué)習(xí)資料永遠(yuǎn)是官方手冊(cè)
1、高階函數(shù)
變量可以指向函數(shù),函數(shù)的參數(shù)可以接收變量,那么函數(shù)可以接收另一個(gè)函數(shù)作為參數(shù),這種函數(shù)稱(chēng)為高階函數(shù)。
(1)把函數(shù)作為實(shí)參
(2)把函數(shù)作為返回值
2、系統(tǒng)的內(nèi)置高階函數(shù)
(1)map函數(shù):接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是序列,map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并且把結(jié)果作為新的列表返回
(2)reduce函數(shù):把一個(gè)函數(shù)作用到一個(gè)序列上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce把結(jié)果和序列的下一個(gè)元素做累積計(jì)算
(3)filter函數(shù):也接收一個(gè)函數(shù)和一個(gè)序列,和map函數(shù)不同的是,filter函數(shù)把傳入的函數(shù)依次作用于每個(gè)元素,然后返回返回值是True的元素
(4)sorted函數(shù):排序函數(shù)
把用戶名按照首字母不區(qū)分大小寫(xiě)排序
(5)sorted()函數(shù)按照關(guān)鍵字排序
關(guān)鍵字:商品個(gè)數(shù)
(6)sorted()函數(shù)按照關(guān)鍵字排序,用鍵值來(lái)查找
(7)lambda匿名函數(shù):有時(shí)候傳參數(shù)時(shí)不需要顯示自定義的函數(shù),直接傳入匿名函數(shù)更方便;冒號(hào)前面的x,y表示函數(shù)參數(shù),匿名函數(shù)不需要擔(dān)心函數(shù)名的沖突,匿名函數(shù)也是一個(gè)函數(shù)對(duì)象,可以把匿名函數(shù)賦值給一個(gè)變量,再利用變量來(lái)調(diào)用函數(shù),匿名函數(shù)也可以作為返回值返回
3、高階函數(shù)的應(yīng)用:
(1)sorted函數(shù):
(2)sorted函數(shù)默認(rèn)是從小到大排序
4、裝飾器
裝飾器就是用來(lái)裝飾函數(shù)的:想要增加原有函數(shù)的功能,但是不希望修改原有函數(shù)的定義,在代碼運(yùn)行期間動(dòng)態(tài)增加功能的方式
(1)此裝飾器的功能:計(jì)算函數(shù)的運(yùn)行時(shí)間
import functools
@functools.wraps(f)? ?##保留原有函數(shù)的屬性
運(yùn)行結(jié)果:
(2)此裝飾器的功能:用戶登錄認(rèn)證
運(yùn)行結(jié)果:
(3)此裝飾器的功能:認(rèn)證用戶的同時(shí),顯示用戶的轉(zhuǎn)賬金額
import inspect
inspect.getcallargs()將傳的參數(shù)封裝為一個(gè)字典,字典的key值是形式參數(shù),value值是實(shí)參
(4)此裝飾器的功能:確保收到的每個(gè)參數(shù)都是整數(shù),是整數(shù)就求和,否則拋出錯(cuò)誤
(5)此裝飾器的功能:給裝飾器傳參數(shù),是整數(shù)和浮點(diǎn)數(shù)就求和
python學(xué)習(xí)網(wǎng),大量的免費(fèi)python視頻教程,歡迎在線學(xué)習(xí)!
map函數(shù)的用法如下:
map(func, lst) ,將傳?的函數(shù)變量 func 作?到 lst 變量的每個(gè)元素中,并將結(jié)果組成新的列表 (Python2)/ 迭代器(Python3) 返回。
注意:
map()返回的是一個(gè)迭代器,直接打印map()的結(jié)果是返回的一個(gè)對(duì)象。
map函數(shù)示例代碼:
lst = ['1', '2', '3', '4', '5', '6']
print(lst)
lst_int = map(lambda x: int(x), lst)
# print(list(lst_int))
for i in lst_int:
print(i, end=' ')
print()
print(list(lst_int))
map() 會(huì)根據(jù)提供的函數(shù)對(duì)指定序列做映射。
第一個(gè)參數(shù) function 以參數(shù)序列中的每一個(gè)元素調(diào)用 function 函數(shù),返回包含每次 function 函數(shù)返回值的新列表。 擴(kuò)展資料
map() 函數(shù)語(yǔ)法:
map(function, iterable, ...);
參數(shù):
function -- 函數(shù);
iterable -- 一個(gè)或多個(gè)序列