Python Map 函數(shù)詳解
如果你正在學(xué)習(xí)編程,那么掌握 Python map 函數(shù)是你升級(jí)的機(jī)會(huì)。
想象一下:你想成為一個(gè)更高效的程序員,你希望代碼編譯得更快,你想用你強(qiáng)大的編程知識(shí)給同行留下深刻印象。如果你對(duì)其中任一點(diǎn)有共鳴,那么你來對(duì)地方了。
在我們繼續(xù)之前,你需要了解什么是函數(shù)和可迭代對(duì)象:
函數(shù)是執(zhí)行特定任務(wù)的代碼。
例如:len()
, print()
, str()
可迭代對(duì)象是包含一個(gè)或多個(gè)項(xiàng)的對(duì)象。
例如:列表
、字典
、元組
Python map 函數(shù)是一個(gè)允許你使用另一個(gè)函數(shù)轉(zhuǎn)換整個(gè)可迭代對(duì)象的函數(shù)。這里的關(guān)鍵概念是轉(zhuǎn)換,它可以包括但不限于:
- 將字符串轉(zhuǎn)換為數(shù)字
- 四舍五入數(shù)字
- 獲取每個(gè)可迭代項(xiàng)的長度
你可能想知道,“為什么我不能用 for 循環(huán)來做上面的事情?”
答案是:你可以。但是使用 Python map 函數(shù)可以節(jié)省內(nèi)存(這意味著你的代碼運(yùn)行得更快),并且需要更少的代碼。讓我們通過一個(gè)例子來表達(dá)我的意思。
首先我們從 for 循環(huán)開始
假設(shè)你有一個(gè)數(shù)字組成的字符串列表,你需要將字符串列表轉(zhuǎn)換為整數(shù):
list_of_strings = ["5","6","7","8","9", "10"]
你可以使用空列表和 for 循環(huán)來完成此操作:
list_of_strings = ["5","6","7","8","9", "10"] result = [] for string in list_of_strings: result.append(int(string)) print(result)
這個(gè)示例運(yùn)行的結(jié)果是:
輸出:[5, 6, 7, 8, 9, 10]
for 循環(huán)背后發(fā)生了什么
你可能對(duì)結(jié)果感到滿意,但想想你的代碼剛剛做了什么。
你告訴計(jì)算機(jī)遍歷每個(gè)項(xiàng)目(“5”、“6”、“7” 等),轉(zhuǎn)換項(xiàng)目,然后將該項(xiàng)目存儲(chǔ)在新列表中。雖然使用 for 循環(huán)來轉(zhuǎn)換列表是有效的,但它不是最佳的。
Python map 函數(shù)(附示例代碼)
相反,讓我們使用 Python map 函數(shù)來生成最佳結(jié)果。我們將從需要轉(zhuǎn)換的字符串列表開始:
list_of_strings = ["5","6","7","8","9", "10"]
然后我們將使用 Python map 函數(shù)將字符串列表轉(zhuǎn)換為整數(shù)列表:
result = map(int,list_of_strings) print(list(result))
如果你運(yùn)行上面的例子,你會(huì)得到相同的結(jié)果:
輸出:[5, 6, 7, 8, 9, 10]
在我們了解為什么 Python map 函數(shù)比使用 for 循環(huán)更好之前,讓我們分解一下我們剛剛做的事情:
list_of_strings = ["5","6","7","8","9", "10"]
我們?cè)谶@里所做的只是創(chuàng)建一個(gè)變量來存儲(chǔ)我們想要轉(zhuǎn)換為數(shù)字的字符串列表。
result = map(int,list_of_strings)
讓我們從里到外分解上面的代碼。Python map 函數(shù)的語法如下:
map(insert function here, insert iterable here)
map()
只是 Python map 函數(shù)的名稱,沒什么特別的。
insert function here
是你將在函數(shù)中寫入的空間。在上面的代碼示例中,我們使用了 int 函數(shù)。我們可以使用另一個(gè)內(nèi)置函數(shù),如 len() ,或者我們可以構(gòu)建自己的函數(shù)并在這里也使用它。
insert iterable here 是你將在你選擇的可迭代項(xiàng)目中寫入的空間。在本例中,我們插入了列表(list_of_strings)。
result 是我們存儲(chǔ)新轉(zhuǎn)換項(xiàng)目的變量。
讓我們轉(zhuǎn)到最后一行代碼。同樣,它將從內(nèi)而外執(zhí)行:
print(list(result))
list()
接收我們新轉(zhuǎn)換的可迭代項(xiàng),并告訴我們的計(jì)算機(jī)這些項(xiàng)是列表的一部分。
print()
打印出我們的新列表!
Python map 函數(shù)背后發(fā)生了什么
Python map 函數(shù)不是遍歷字符串列表的每個(gè)項(xiàng)目,而是將整個(gè)字符串列表轉(zhuǎn)換為數(shù)字列表。你節(jié)省了內(nèi)存,并且代碼運(yùn)行得更快。
如果要轉(zhuǎn)換項(xiàng)目,使用 Python map 函數(shù)比 for 循環(huán)更好
最后,Python map
函數(shù)比 for 循環(huán)更優(yōu)雅,將幫助你更快地編譯代碼。
使用 Python map 函數(shù)將有助于將你的編程技能提升到一個(gè)新的水平,讓你成為一名更好的程序員。在此過程中,你甚至可以用這項(xiàng)新技能給你的同行留下深刻印象。
總結(jié)
Python map 函數(shù)只是一個(gè)開始。還有更多 Python 技巧可以幫助你編寫更優(yōu)雅的代碼并提升你的編程技能。祝你學(xué)習(xí)愉快!
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python刪除指定類型(或非指定)的文件實(shí)例詳解
這篇文章主要介紹了python刪除指定類型(或非指定)的文件,以實(shí)例形式較為詳細(xì)的分析了Python刪除文件的相關(guān)技巧,需要的朋友可以參考下2015-07-07在python tkinter界面中添加按鈕的實(shí)例
今天小編就為大家分享一篇在python tkinter界面中添加按鈕的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03Python 比較文本相似性的方法(difflib,Levenshtein)
今天小編就為大家分享一篇Python 比較文本相似性的方法(difflib,Levenshtein),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10Python調(diào)用adb命令實(shí)現(xiàn)對(duì)多臺(tái)設(shè)備同時(shí)進(jìn)行reboot的方法
今天小編就為大家分享一篇Python調(diào)用adb命令實(shí)現(xiàn)對(duì)多臺(tái)設(shè)備同時(shí)進(jìn)行reboot的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10vscode寫python時(shí)的代碼錯(cuò)誤提醒和自動(dòng)格式化的方法
這篇文章主要介紹了vscode寫python時(shí)的代碼錯(cuò)誤提醒和自動(dòng)格式化的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05opencv+pyQt5實(shí)現(xiàn)圖片閾值編輯器/尋色塊閾值利器
這篇文章主要介紹了opencv+pyQt5實(shí)現(xiàn)圖片閾值編輯器/尋色塊閾值利器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11