© BEST-BACKGROUNDS/Shutterstock.com

Python Map() 函數因其高效和易用性而深受喜愛。函數是所有程序員在日常生活中使用的工具,它們是所有編程語言不可或缺的一部分。您使用哪種語言並不重要;功能是每個開發人員在他們的旅程中學習的基本概念。

現在,Map() 函數(JavaScript 等其他流行語言中也包含的一項功能)是一個很棒的工具,可以為您省去數百個麻煩,並讓您提高代碼的效率。

在在本文中,我們將向您展示如何使用此工具及其所有功能,以便您可以在自己的項目中利用它。讓我們直接進入!

什麼是 Map() 函數?

Map() 是一個已經作為原生工具包含在 Python 中的函數,這意味著您可以立即使用它。調用它後,Map() 會處理您發送的數據並將其轉換為可迭代對象。這個過程稱為映射,允許您對每個可迭代項應用轉換並返回結果。這是 Python 展示的函數式編程的一個優勢,也是其令人難以置信和日益流行的部分原因。

簡而言之,函數式編程是一種範式,它意味著大量使用函數和返回數據的評估以模塊化和連接的方式獲得期望的結果。這確實是一個很大的話題,因此我們將深入探討它,至少在本文中是這樣。學習 Python 中的 Map() 函數和其他基礎知識將使您離複雜編碼更近一步,即使您不是在進行純函數式編程。

那麼,讓我們看看這一切在實踐中意味著什麼。

調用 Map()

如果我們想使用 Map(),我們需要調用它第一的。然後,我們給它處理數據的函數和稱為 iterable 的項目列表。然後該操作返回一個映射對象,我們可以將其存儲在變量中。

map(function, iterable)

我們可以在 Map() 函數中使用一個或多個可迭代對象,並且所有這些都將被循環和轉換。

在 Python 中,我們可以使用 def 關鍵字構造函數。讓我們定義一個函數,對每個數字求和並將其返回兩倍。

此函數對每個數字求和,然後返回該數字,加倍。

©”TNGD”.com

現在,讓我們採用相同的方法創建一個新列表與每個數字的立方體。

返回數字的立方列表。

©”TNGD”.com

在 Python 中使用 Map() 和 Lambda 表達式

在 Python 中,Lambda 表達式允許我們在與 map() 相同的行中定義函數,而不是將其寫在單獨的部分中。例如:

這個還打印一個數字列表,立方。

©”TNGD”.com

如您所見,我們得到了相同的結果,但沒有編寫太多代碼並且語法更清晰。

在 Python 中使用帶有內置函數的 Map()

對我們來說幸運的是,Python 包含許多內置函數,這些函數將有助於構建任何項目。讓我們看一個使用 map() 的函數示例。

打印出每個列表項中的字符數。

©”TNGD”.com

如您在上面的示例中所見,我們使用了len 內置函數,用於計算列表中每個單詞的字符數。然後,我們返回結果並將其保存在一個新的列表中。

Map() 函數的優點是什麼?

我們已經看到了 map() 的一些特性在處理需要處理的數據和操作時。當然,這是您作為程序員的旅程中的一個基本工具,它將在許多項目中找到它的出路。讓我們來了解一下它的一些核心優勢。

在編程中,“for”循環是一種內置且常用的工具,其應用類似於 map() 函數,雖然我們不會深入探討那。問題是,for 循環編寫起來可能更複雜,這通常會導致代碼中出現更多錯誤。因此,map() 函數改進了我們的邏輯,為我們提供了一種更短、更有效的方法來實現相同的結果。然後 map() 函數作為“for”循環的替代項出現。但是兩者有什麼區別呢?許多差異之一是函數和內置函數的實現在 map() 函數語法中是可調整的。

可以與 map() 組合的其他一些工具是 if 語句、數學庫和字典集合。這種方法提供了一種以簡化方式創建複雜想法的方法。例如,讓我們看看當 if 語句與 map() 函數結合時會發生什麼:

此代碼返回一個數字列表,列表中的所有偶數都翻了一番。

©”TNGD”.com

在此操作中,if 語句允許我們區分奇數和偶數。在每種情況下,應用的過程不同,返回的結果也會受到影響。因此,這種編寫代碼的方法將為您節省大量時間,並且是在開發環境中構建複雜應用程序時減少錯誤的好方法。

常見錯誤和錯誤

操作map() 將為您提供上面列出的所有優勢。但是,值得一提的是,調試又長又復雜的代碼是大多數程序員的禍根。因此,當您的代碼開始增長時,您最好小心,尤其是當您有許多函數相互鏈接時。

即使 map() 函數可以與其他語句和函數組合,您也不應該不要過度這樣做,以免代碼的複雜性使其效率低下。

當函數的返回值超出預期時,代碼處理過程中可能會出現錯誤。因此,要特別注意典型的無限循環。此錯誤可能出現在轉換 iterables 的所選函數中,並在定義的條件始終計算為 true 時出現。例如,您可能有一個輸出數字並且直到達到 0 才停止的循環。這是遞歸錯誤:代碼的輸出一次又一次地激活代碼。

使用 map() 時的另一個常見錯誤是將 None 定義為函數。讓我們看看在這種情況下會發生什麼:

當您使用 Map() 將 None 定義為函數時會發生什麼。

©”TNGD”.com

這是為您提供的錯誤消息的轉錄文本:

回溯(最近調用最後):

文件“/Users/Documents/Python/python_example.py”,第 3 行,在

for x in map_iterator:

TypeError:’NoneType’object is not callable

因此,請始終注意這些錯誤並在它們堆積之前修復它們!

結論:Python 映射() 函數解釋

所以,在這之後,您應該具備編寫一些優秀代碼的能力!學習 Map() 對任何程序員來說都是一個不可思議的進步,用它開發想法的可能性是無窮無盡的。

我們已經了解了 Map() 如何成為一個接受可迭代對象並將其轉換的工具具有您選擇的功能的循環。它可以與您自己創建的函數以及內置函數、lambda 函數和方法一起使用。

Map() 是用 C 語言構建的,因此此函數中的替代邏輯為我們提供了優化的性能。與經典的(但對資源要求更高的 for 循環)相比,map() 將在計算和處理數據時節省內存。

由於您的功能與 Map() 的邏輯分離,您可以運行和單獨調試每個函數,一旦識別出導致代碼故障的行,所有錯誤和錯誤都應該很容易修復。此外,查看官方文檔了解詳細信息、調試方法以及對Python概念的進一步解釋.

祝你的編程之旅好運!

Python Map() 函數詳解:附帶示例 FAQs(常見問題解答)

Python 什麼時候出現發布?

Guido van Rossum 於 1991 年創建並發布了 Python 作為 ABC 編程語言的繼承者。 Python 2.0 於 2000 年首次出現。當前版本 Python 2.7.18 於 2020 年發布。

Python 是一種流行的編程語言嗎?

隨著與 C、Java 和許多其他語言一樣,Python 始終是業界最流行的編程語言之一。這是因為它簡單易學,對許多應用程序來說非常高效,並且非常適合數據分析,這是一個不斷發展的技術領域。

for 循環和 Map() 函數有什麼區別?

這兩種工具都可以得到相同的結果,但是 map( ) 函數具有簡化語法和更好內存性能的優點。

什麼是函數式編程?

函數式編程是一種計算範式,它構建了它的核心周圍功能作為其主要構造方法。函數和其他值以模塊化方式相互鏈接,而不是線性和順序代碼結構。

我可以將 map() 與其他函數結合使用嗎?

是的,當然!您可以嵌套使用 map() 並與其他函數(例如 filter()、reduce() 等)結合使用,以獲得複雜但高效的結果。

By Henry Taylor

我是後端開發人員。 你們中有些人可能在開發者大會上見過我。 最近我一直在做一個開源項目。