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