Python是開發人員當中流行的程式語言之一。它應用廣泛,無論是Web開發還是機器學習。Python大受歡迎的原因有很多,比如社群支援、出色的庫、廣泛用於機器學習和大資料以及簡單
2021-06-09 10:01:52
Python是開發人員當中流行的程式語言之一。它應用廣泛,無論是Web開發還是機器學習。Python大受歡迎的原因有很多,比如社群支援、出色的庫、廣泛用於機器學習和大資料以及簡單的語法。
儘管有這麼多優點,Python還是有一個缺點:速度慢。作為一種解釋性語言,Python的速度不如其他程式語言。不過,我們可以用幾個技巧來克服這個問題。
本文將分享幾個Python技巧,我們可以用來使Python程式碼運行得比平時更快。
每個資料結構對運行時間都有顯著影響。Python有很多內建的資料結構,比如列表、元組、集和字典等。大多數人在所有情況下都使用列表資料結構。
在Python中,集和字典擁有O(1)查詢效能,因為它們使用雜湊表。在以下情況下,您可以使用集和字典而不是列表:
您在集合中沒有重複項。
您需要在集合中重複搜尋項。
集合含有大量項。
該頁記錄了目前CPython中各種操作的時間複雜度(又名「Big O」或「Big Oh」)。
Python的內建函數是加速程式碼的最佳方式之一。您必須在需要時使用內建的Python函數。這些內建函數經過了充分測試和優化。
這些內建函數之所以很快,是由於Python的內建函數(比如min、max、all和map等)都是用C語言實現的。
您應該使用這些內建函數,而不是手動編寫有助於更快執行程式碼的函數。
例子:
newlist = [] for word in wordlist: newlist.append(word.upper())
編寫該程式碼的一種更好的方式是:
newlist = map(str.upper, wordlist)
這裡我們使用內建的map函數,它是用C編寫的。因此,它比使用迴圈要快得多。
如果您想為多個變數賦值,不要逐行賦值。Python有一種優雅且更好的方式為多個變數賦值。
例子:
firstName = "John" lastName = "Henry" city = "Manchester"
為這些變數賦值的一種更好的方式如下:
firstName, lastName, city = "John", "Henry", "Manchester"
變數的這種賦值比上一種賦值簡潔且優雅得多。
列表推導是一種優雅且更好的方式,只需一行程式碼即可基於現有列表的元素創建新列表。
與定義一個空列表併為該空列表新增元素相比,列表推導是一種更具Python特色的創建新列表的方式。
列表推導的另一個優點是,它比使用append方法為Python 列表新增元素更快。
例子:
newlist = [] for i in range(1, 100): if i % 2 == 0: newlist.append(i**2)
使用列表推導的一種更好的方式:
newlist = [i**2 for i in range(1, 100) if i%2==0]
如果使用列表推導,程式碼看起來更簡潔。
您應該避免匯入不必要的模組和庫,除非需要它們。可以指定模組名稱而不是匯入完整的庫。
匯入不必要的庫會導致程式碼效能下降。
例子:
假設您需要求一個數的平方根。別用這個:
import math value = math.sqrt(50)
而是用這個:
from math import sqrt value = sqrt(50)
在Python中,我們使用「+」運算符連線字元串。但是在Python中連線字元串的另一種方式是使用join方法。
join方法是一種更具Python特色的連線字元串的方式,它也比使用「+」運算符連線字元串更快。
join() 方法更快的原因是,「+」運算符創建一個新字元串,然後在每一步複製舊字元串,而join() 方法不是這麼工作的。
例子:
output = "Programming" + "is" + "fun
使用join方法:
output = " ".join(["Programming" , "is", "fun"])
這兩種方法的輸出一樣。唯一的區別是,join()方法比「+」運算符快。
這就是本文的全部內容。本文討論了可用於加快程式碼運行速度的幾個技巧。這些技巧尤其適用於爭分奪秒的競賽型程式設計。
相關文章
Python是開發人員當中流行的程式語言之一。它應用廣泛,無論是Web開發還是機器學習。Python大受歡迎的原因有很多,比如社群支援、出色的庫、廣泛用於機器學習和大資料以及簡單
2021-06-09 10:01:52
華為鴻蒙系統已經上線,那麼對於這個系統而言,華為在其他的配套方案上也得跟上。近日華為專門為鴻蒙系統設計了全新定製的「HarmonyOS Sans」,目前這套字型已經公開上線,可以免費
2021-06-09 10:00:38
No.1Excel窗體大小是可以任意設定的,無論用滑鼠操作還是用程式碼,完全可以實現大小控制。本節介紹一下怎麼對Excel窗體大小改變和縮放操作。要實現這些功能就必須用程式碼,窗體
2021-06-09 10:00:13
考生在高考過程中將高考數學題拍照上傳至小猿搜題APP。 相信大家這兩天都被這個新聞震驚到。 起因6月7日下午,小猿搜題APP工作人員監測後臺時發現,某使用者通過手機拍照搜尋
2021-06-09 09:59:34
我綜合了一下身邊的人給出的「高階程式設計師」的定義:十年以上開發經驗有1年使用非常熱門的框架經驗,並且框架釋出時間要超過一年一本技術書籍的坐著;可以默寫上演算法;寫過開
2021-06-09 09:59:08
蘋果最近遭遇了一場訴訟,稱新iOS軟體更新大幅降低了處理速度和電池壽命進而損害了iPhone。訴訟檔案寫道:「蘋果需要告訴現有和未來的iPhone使用者,這些被吹捧為增加理想功能、
2021-06-09 09:58:43