如果你關注我已經有一段時間,那你就會知道我經常發布用于解決日常問題的Python代碼片段。好吧,我想我終于可以在一篇包含這些資源鏈接的文章中聚合所有這些回復了。
請注意,我想要開始將本文中的所有代碼片段移植到Jupyter Notebook上。如果你對這類項目感興趣,請直接訪問GitHub 倉庫。我將不勝感激!
日常問題
在本節中,我們將研究會出現的各種常見場景,以及如何使用Python代碼解決這些問題。具體來說,我將對這些問題進行簡單解釋,并給出一系列的Python代碼解決方案。然后,我將鏈接出所有我擁有的資源。
反轉字典
有時候,當我們擁有一個字典時,我們想要對它的鍵和值進行反轉。當然,我們也會存在諸如“我們要怎樣處理重復的值呢?”和“如果這些值是不可哈希的呢?”這樣的擔憂。盡管如此,在簡單的情況下,這里有幾個解決方案:
想要了解更多的解釋,請參閱我題為“如何在Python中翻轉一個字典”的文章。它包括每個解決方案的分解,它們的性能指標,以及它們何時適用。同樣,我還有一個YouTube的視頻,也討論了同樣的話題。
將兩個列表的元素相加
假設你有兩個列表,你想按元素把它們合并成一個列表。換句話說,你希望將第一個列表的第一個元素和第二個列表的第一個元素相加,并將結果存儲在一個新列表中。有幾種方法可以做到這一點:
如果你想要更深入的解釋,請查看我的文章“如何在Python中對兩個列表的元素求和”,其中甚至包括一個有趣的挑戰。同樣,你也可能會從我的相同主題的YouTube視頻中得到一些有價值的信息。
檢查一個文件是否存在
Python的一個令人驚奇的好處是它管理文件非常容易。與JAVA不同,Python有一個內置的文件讀寫語法。因此,檢查一個文件是否存在是一個相當簡單的任務:
與往常一樣,你可以在我題為“在Python中如何檢查一個文件是否存在”的文章中了解更多關于這些解決方案的信息,這篇文章提供了三個解決方案和性能指標。
將兩個列表轉換為一個字典
在前面,我們討論了在Python中對兩個列表求和。事實證明,我們可以用兩個列表做很多事情。例如,我們可以嘗試將一個映射到另一個來創建一個字典。
與許多此類問題一樣,這里也存在一些問題。例如,如果兩個列表的大小不相同怎么辦?同樣,如果鍵不是唯一的或可哈希的呢?也就是說,在簡單的情況下,有一些直接的解決方案:
同樣,你可以在我題為“在Python中如何將兩個列表轉換為一個字典”的文章中找到對這些解決方案的解釋和更多信息。如果你是一個視覺達人,你可能會更喜歡我的YouTube視頻,它也涵蓋了將列表映射列字典的內容。
檢查一個列表是否為空
如果你來自Java或C之類的靜態類型語言,你可能會為Python中缺少靜態類型而煩惱。確實,不知道變量的類型有時會令人沮喪,但也有好處。例如,我們可以通過類型靈活性來檢查一個列表是否為空——在其他方法中:
如果你想更多地了解這三種解決方案,請參閱我題為“如何在Python中檢查空列表”的文章。“如果你有困難,請看看我的YouTube視頻,里面也涵蓋了同樣的話題。
克隆一個列表
我最喜歡的編程主題之一是復制數據類型。畢竟,在我們生活的這個基于引用的世界中,這并不容易,Python也是如此。幸運的是,如果我們想復制一個列表,這里有幾種方法可以完成:
當談到克隆時,注意淺拷貝和深拷貝的區別是很重要的。幸運的是,我有一篇關于這個主題的文章。
最后,你可以在我的文章“如何在Python中克隆一個列表”中找到更多關于上述解決方案的信息。此外,你可能會在我的題為“在Python中復制匹茲堡企鵝列表的7種方式”的相關YouTube視頻中發現更多信息。
檢索列表的最后一項
既然我們在討論有關列表的主題,那么我們來討論一下獲取列表的最后一項。在大多數語言中,這涉及到一些涉及列表長度的復雜數學表達式。如果我告訴你Python中有幾個更有趣的解決方案呢?
與往常一樣,你可以從我題為“在Python中如何獲取一個列表的最后一項”的文章了解更多關于這些解決方案的信息,其中包含一個質疑、性能指標和一個YouTube視頻。
創建Python腳本快捷方式
有時在創建腳本時,你希望能夠通過單擊一個按鈕就可以方便地運行它。幸運的是,有幾種方法可以做到這一點。
首先,我們可以創建一個帶有以下設置的windows快捷方式:
同樣,我們也可以創建一個帶有以下代碼的批處理文件:
最后,我們可以創建一個帶有以下代碼的bash腳本:
如果你正在尋找更多的解釋,請查看標題為“如何創建一個帶有參數的Python腳本快捷方式”的文章。
對一個字符串列表進行排序
排序是計算機科學中一項常見的任務,你迫切想要知道如何去實現它。盡管大多數課程都高度關注排序算法,但沒有人真正告訴你排序實際上有多復雜。例如,對數字排序很簡單,但是對字符串排序呢?我們如何確定一個合適的順序呢?幸運的是,Python中有很多選項:
如果你對這些解決方案的工作原理感到好奇,或者你只是想知道其中的一些潛在風險,請參閱我題為“如何在Python中對字符串列表進行排序”的文章。
解析電子表格
Python的一個比較有趣的用例是數據科學。然而,不幸的是,這意味著你需要處理大量各種格式的原始數據,比如文本文件和電子表格。幸運的是,Python有許多用于讀取不同文件格式的內置實用程序。例如,我們可以輕松解析電子表格:
在本例中,我們嘗試在一個字典列表中獲取輸出。如果你想了解更多有關其運行原理的信息,請參閱題為“如何在Python中解析電子表格”的完整文章。
對一個字典列表進行排序
一旦你有了一個字典列表之后,你可能希望按特定的順序組織它們。例如,如果這些字典有一個日期鍵,那我們可以嘗試按時間順序排序。幸運的是,排序是另一個相對輕松的任務:
所有這些解決方案以及更多內容都在我題為“如何在Python中對字典列表進行排序”的文章中進行了概述。
編寫列表推導式
我最喜歡談論的Python主題之一是列表推導式。作為一個在Java、C/ C++和C#這樣的語言環境中長大的人,我從未見過任何類似列表推導式的東西,直到我接觸了Python。現在,我對它們非常著迷。因此,我把所有的例子放在一起:
與往常一樣,你可以在我題為“如何在Python中編寫列表推導式”的文章中找到我對所有這些代碼的更正式的解釋。作為一個額外的福利,我有一個YouTube視頻分享了幾個列表推導式的例子。
合并兩個字典
在這個集合中,我們討論了很多關于處理列表和字典等數據結構的內容。這個也一樣。特別是,我們正在考慮合并兩個字典。當然,合并兩個詞典也有風險。例如,如果有重復的鍵怎么辦?幸運的是,我們有針對此的解決方案:
如果你感興趣的話,我有一篇題為“如何在Python中合并兩個字典”的文章專門討論了這個主題,其中介紹了四種解決方案以及性能指標。
格式化字符串
不管我們承認與否,我們經常會發現我們為了快速調試的目的,而在代碼中隱藏了print語句。畢竟,合理放置的打印語句可以為你節省大量時間。不幸的是,要確切地顯示我們想要的東西并不總是那么容易或方便。幸運的是,Python有很多格式化選項:
請記住,這些解決方案不一定必須與print語句一起使用。換句話說,你可以隨時根據需要使用f-strings之類的解決方案。
和往常一樣,你可以在我題為“如何在Python中格式化字符串”的文章中找到所有這些解決方案的解釋和詳細信息。如果你更想查看這些代碼片段的實際效果,你可以查看我在YouTube上發布的題為“Python中格式化以我的貓為主角的字符串的6種方法"的視頻。
在同一行打印
在格式化字符串時的同一行中,有時你只需要在Python中的同一行中進行打印。由于print命令是當前設計的,它會自動將換行符添加到你的字符串的末尾。幸運的是,有一些方法可以解決這個問題:
與往常一樣,如果你打算使用這些解決方案中的任何一個,請參閱題為“如何在Python中在同一行上進行打印”的文章,了解更多用例和注意事項。
測試性能
最后,有時你只想比較幾個代碼塊。幸運的是,Python有幾個簡單的選項:
同樣,如果你想要了解更多細節,請查看題為“如何對Python代碼進行性能測試”的文章。
執行反向字典查找
早些時候,我們討論了在某些情況下翻轉字典是可以的。當然,如果我們的字典很大,直接翻轉字典可能沒有意義。相反,我們可以根據一個值查找鍵:
如果這看起來有幫助,你可以查看題為“如何在Python中執行反向字典查找”的源文章。我喜歡寫這篇文章的原因之一就是學習生成器表達式。如果你是第一次見到他們,你可能想去看看它。
檢查一個字符串是否包含一個子字符串
我發現自己經常搜索的一件事是檢查Python中的字符串是否包含子字符串的方法。與大多數編程語言不同,Python利用了一個很好的關鍵字來解決這個問題。當然,也有基于方法的解決方案:
如果你像我一樣忘記了in關鍵字,那么你可能希望將“如何檢查一個字符串是否包含一個子字符串”文章添加到書簽中。
分享你自己的問題
正如你所看到的,本文及其相關的系列文章已經相當龐大了。也就是說,我想繼續增加它們。因此,你可以考慮分享一些你自己的問題。畢竟,總有一些事情是你經常需要google的。為什么不和我們一起分享它呢?
與此同時,你可以通過瀏覽我的時事通訊,訪問商店,訂閱我的YouTube頻道,和/或成為我的贊助人來幫助我擴大我的合集。此外,歡迎你瀏覽以下相關文章:
- Python中海象運算符背后的爭議
- 采用模運算的石頭剪刀布