四種Python推導式開發技巧,讓你的程式碼更有效率
對於資料科學,Python通常被廣泛地用於進行資料的處理和轉換,它提供了強大的資料結構處理的函數,使資料處理更加靈活,這裡說的「靈活性」是什麼意思?
這意味著在Python中總是有多種方法來實現相同的結果,我們總是有不同的方法並且需要從中選擇易於使用、省時並能更好控制的方法。
要掌握所有的這些方法是不可能的。所以這裡列出了在處理任何類型的資料時應該知道的4個Python技巧。
列表推導式List Comprehension是建立清單的一種優雅且最符合python語言的方法。與for迴圈和if語句相比,列表推導式在基於現有列表的值建立新列表時語法要短得多。因此,讓我們看看該特性如何獲得清單的副本。
使用清單推導式複製一個清單
有時需要建立現有清單的副本。最簡單的答案是.copy(),它允許您將一個清單的內容複製到另一個(新)清單。
例如,一個由整數組成的列表original_list。
original_list = [10,11,20,22,30,34]
可以簡單地使用.copy()方法複製此清單。
duplicated_list = original_list.copy()
列表推導式可以得到完全相同的輸出。複製清單是理解清單推導式的最佳案例。
看看下面這段程式碼。
duplicated_list = [item for item in original_list]
這裡並不是說複製清單使用清單推導式比較好,而是說對於介紹清單推導式的工作方式,這個案例是最好的。
接下來,讓我們看看對清單的每個元素執行數學運算時,清單推導式如何讓工作變得簡單。
列表中的元素相乘
最簡單或直接的乘法方法是使用乘法運算符,即*
#例如,想用一個標量(即數字5)乘以列表中的每一項。這裡肯定不能使用original_list*5,因為它將建立清單的5個副本。
在這個場景中,最好的答案是清單推導式,如下所示。
original_list = [10,11,20,22,30,34] multiplied_list = [item*5 for item in original_list] # Output [50, 55, 100, 110, 150, 170]
這裡的操作並不侷限乘以一個數字。可以對原始清單的每個元素執行複雜的操作。
例如,假設想要計算每一項的平方根的立方,可以在一行中解決它。
multiplied_list = [math.sqrt(item)**3 for item in original_list] # Output [31.6227766016838, 36.4828726939094, 89.4427190999916, 103.18914671611546, 164.31676725154983, 198.25236442474025]
用於計算數字平方根的函數sqrt屬於庫math,因此在本例中需要在使用它之前導入它。
與上面所示的內建函數類似,也可以在清單的每個元素上使用使用者定義的函數。
例如如下所示的簡單函數。
def simple_function(item): item1 = item*10 item2 = item*11 return math.sqrt(item1**2 + item2**2)
可以對清單的每一項應用這個使用者定義的函數。
multiplied_list = [simple_function(item) for item in original_list] # Output [148.66068747318505, 163.52675622050356, 297.3213749463701, 327.0535124410071, 445.9820624195552, 505.4463374088292]
列表推導式在實際場景中甚至更有用。通常在分析任務中需要從清單中刪除某種類型的元素,例如消0護著nan元素。清單推導式是完成這些任務的完美工具。
刪除清單中的元素
根據特定條件篩選資料是選擇所需資料集的常見任務之一,同樣的邏輯也用於清單推導式中。
假設你有下面提到的數字列表。
original_list = [10, 22, -43, 0, 34, -11, -12, -0.1, 1]
你想要從這個清單中只保留正值。因此,從邏輯上講,您希望只保留那些對條件項> 0求值為TRUE的項。
new_list = [item for item in original_list if item > 0] # Output [10, 22, 34, 1]
if子句用來刪除負值。可以使用if子句應用任何條件來從清單中刪除任何項目。
例如,當想要刪除所有平方小於200的項目時需要做的就是在列表綜合中提到條件項**2 > 200,如下所示。
new_list = [item for item in original_list if item**2 > 200] # Output [22, -43, 34]
在處理真實的資料集時,過濾清單項目的條件可能要複雜得多,這種方法既快又易於理解。
使用dict()將兩個列表轉換為字典鍵值對
有時需要從兩個列表中的值建立字典。你可以使用字典推導式(dictionary comprehension) ,而不是一個一個地輸入,這是創建字典的一種優雅而簡潔的方法!
它的工作原理與列表推導式完全相似,唯一的區別是——創建一個列表推導式時,你將所有內容都包含在方括號中,例如[],而在字典推導式中,你將所有內容都包含在花括號中,例如{}。
假設有兩個清單—欄位和詳細資料—如下所示。
fields = [‘name’, ‘country’, ‘age’, ‘gender’] details = [‘pablo’, ‘Mexico’, 30, ‘Male’]
一個簡單的方法是使用像這樣的字典推導式-
new_dict = {key: value for key, value in zip(fields, details)} # Output {'name': 'pablo', 'country': 'Mexico', 'age': 30, 'gender': 'Male'}
這裡需要理解的重要是函數zip是如何運作的。
在Python中,zip函數接受可迭代對象,如字串、列表或字典作為輸入,返回它們聚合為元組。
因此,在本例中zip已經從列表fields和details中形成了每個項的對。當字典推導式中使用key: value時,只需將此元組解包為單獨的鍵-值對。
當使用Python中內建的dict()建構子(用於建立字典)時,這個過程甚至會變得更快,因為dict()比字典推導式至少快1.3倍!
所以我們需要將此建構函式與zip()函式一起使用,它的語法要簡單得多-dict(zip(fields,details))
總結
正如我一開始提到的,Python非常靈活,因為有多種方法可以達到相同的結果。根據任務的複雜程度需要選擇最好的方法來實現它。
我希望這篇文章能對你有用。如果有任何其他方法可以做到我在本文中提到的同樣的事情,請告訴我。
以上是四種Python推導式開發技巧,讓你的程式碼更有效率的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。
