首頁 > 科技

如何使Python程式碼運行起來速度飛快?

2021-06-09 10:01:52

Python是開發人員當中流行的程式語言之一。它應用廣泛,無論是Web開發還是機器學習。Python大受歡迎的原因有很多,比如社群支援、出色的庫、廣泛用於機器學習和大資料以及簡單的語法。

儘管有這麼多優點,Python還是有一個缺點:速度慢。作為一種解釋性語言,Python的速度不如其他程式語言。不過,我們可以用幾個技巧來克服這個問題。

本文將分享幾個Python技巧,我們可以用來使Python程式碼運行得比平時更快。

1. 合適的演算法和資料結構

每個資料結構對運行時間都有顯著影響。Python有很多內建的資料結構,比如列表、元組、集和字典等。大多數人在所有情況下都使用列表資料結構。

在Python中,集和字典擁有O(1)查詢效能,因為它們使用雜湊表。在以下情況下,您可以使用集和字典而不是列表:

  • 您在集合中沒有重複項。

  • 您需要在集合中重複搜尋項。

  • 集合含有大量項。

該頁記錄了目前CPython中各種操作的時間複雜度(又名「Big O」或「Big Oh」)。

2. 使用內建函數和庫

Python的內建函數是加速程式碼的最佳方式之一。您必須在需要時使用內建的Python函數。這些內建函數經過了充分測試和優化。

這些內建函數之所以很快,是由於Python的內建函數(比如min、max、all和map等)都是用C語言實現的。

您應該使用這些內建函數,而不是手動編寫有助於更快執行程式碼的函數。

例子:

newlist = [] for word in wordlist:     newlist.append(word.upper())

編寫該程式碼的一種更好的方式是:

newlist = map(str.upper, wordlist)

這裡我們使用內建的map函數,它是用C編寫的。因此,它比使用迴圈要快得多。

3. 使用多個賦值

如果您想為多個變數賦值,不要逐行賦值。Python有一種優雅且更好的方式為多個變數賦值。

例子:

firstName = "John" lastName = "Henry" city = "Manchester"

為這些變數賦值的一種更好的方式如下:

firstName, lastName, city = "John", "Henry", "Manchester"

變數的這種賦值比上一種賦值簡潔且優雅得多。

4. 偏愛列表推導而非迴圈

列表推導是一種優雅且更好的方式,只需一行程式碼即可基於現有列表的元素創建新列表。

與定義一個空列表併為該空列表新增元素相比,列表推導是一種更具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]

如果使用列表推導,程式碼看起來更簡潔。

5. 適當的匯入

您應該避免匯入不必要的模組和庫,除非需要它們。可以指定模組名稱而不是匯入完整的庫。

匯入不必要的庫會導致程式碼效能下降。

例子:

假設您需要求一個數的平方根。別用這個:

import math value = math.sqrt(50)

而是用這個:

from math import sqrt value = sqrt(50)

6. 字元串連線

在Python中,我們使用「+」運算符連線字元串。但是在Python中連線字元串的另一種方式是使用join方法。

join方法是一種更具Python特色的連線字元串的方式,它也比使用「+」運算符連線字元串更快。

join() 方法更快的原因是,「+」運算符創建一個新字元串,然後在每一步複製舊字元串,而join() 方法不是這麼工作的。

例子:

output = "Programming" + "is" + "fun

使用join方法:

output = " ".join(["Programming" , "is", "fun"])

這兩種方法的輸出一樣。唯一的區別是,join()方法比「+」運算符快。

結束語

這就是本文的全部內容。本文討論了可用於加快程式碼運行速度的幾個技巧。這些技巧尤其適用於爭分奪秒的競賽型程式設計。


IT145.com E-mail:sddin#qq.com