為什麼 Python 最適合用於競賽程式設計


競賽程式設計通常指的是使用合適的 資料結構 編寫高效演算法的編碼。它們在多個層面上測試程式設計師的技能。

藉助演算法和資料結構,您必須透過應用不同的邏輯來解決您提出的假設程式設計問題。您不僅需要解決問題,還需要提出一個非常有效的解決方案,該解決方案具有良好的時間和空間複雜度。

被稱為競賽程式設計的問題陳述示例可能是 -

給定一個長度為 n 的字串 s,僅包含小寫拉丁字母。

字串的子字串是該字串的連續子序列。因此,字串“forces”是字串“codeforces”的子字串,但字串“coder”不是。

您的任務是計算從該字串中精確刪除一個子字串的方法數量,以使所有剩餘字元相等(不同字元的數量為零或一個)。

保證 s 中至少有兩個不同的字元。

請注意,您可以刪除整個字串,這是正確的。另外,請注意您應該至少刪除一個字元。

要解決上述問題,您可以選擇任何您喜歡的程式語言。

現在問題出現了,為什麼選擇 Python 進行競賽程式設計?

速度

選擇 Python 的原因之一是它可以極大地縮短您編寫程式碼的時間,而是將時間花在思考問題所需的邏輯上。

因為在這種型別的比賽中,時間是關鍵,程式設計師編寫解決方案的速度越快越好。因此,我上面所說的速度是指程式設計師編寫解決方案的速度,而不是 Python 語言的速度。

豐富的庫

Python 擁有各種各樣的標準庫,這些庫可以很好地用於競賽程式設計。

以下是選擇 Python 進行競賽程式設計的其他常見原因 -

i. 常用內建函式

  • Python 提供了一套大量的常用函式,如 count、min、max、sorted 等。這些內建函式非常方便,允許編碼人員輕鬆地繼續並跳過為這些瑣碎的過程編寫程式碼,這些過程通常非常有用。此外,Python 函式使用其函式的最佳演算法。例如,sorted() 函式使用 Timsort 演算法,該演算法在 O(nlogn) 的最壞情況效能下提供穩定排序。這是最好的排序演算法之一,它提供了 O(1) 或恆定執行時間的最佳情況執行時間。

程式碼

#abs()
print(abs(-7))
#max()
print(max(2, 13, 4, 20))
#memoryview()
print(memoryview(bytes(9)))
#object()
o = object();print(type(o))
#pow()
print(pow(2,6))
#reversed
a = reversed([3, 13, 2, 1]); print(a)
#sorted()
print(sorted([9, 2, 4, 13, 7]))
#sum()
print(sum([2, 9, 12, 19]))
# type()
print (type([]))
print (type({}))
#zip()
print(set(zip([1,2],[3,4,5])))

ii. 列表推導式

  • Python 提供了最好的列表推導式之一。它允許我們編寫通常需要 5-20 行程式碼的 1 行程式碼。使用列表推導式,您可以巢狀迴圈和條件

程式碼

# Iterating through a string Using List Comprehension
l_string = [ letter for letter in 'Tutorialspoint' ]
print( l_string)
#List Comprehensions vs Lambda functions
l_lambda = list(map(lambda x: x, 'Tutorialspoint'))
print(l_lambda)

輸出

['T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't']
['T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't']

iii. 標準庫(一大優勢)

  • Python 帶有一個非常廣泛的標準庫,提供了廣泛的功能。這些庫附帶了幾個資料結構,消除了手動實現它們的需要,以及 itertools,它是庫中非常重要的部分。
  • 例如,您想生成列表的所有可能的排列並將其儲存在另一個單個列表中,使用列表推導式和來自 itertools 的排列函式。

Python 標準庫

資料型別
字串
網路
執行緒
作業系統
壓縮
GUI
引數
CGI
複數
FTP
加密
測試
多媒體
資料庫
CSV 檔案
日曆
電子郵件
XML
序列化

iv. 各種各樣的資料結構

  • Python 提供了一套大量的資料結構供您在編碼中使用,包括字典、集合、元組、列表等等,這些都是標準包。

v. 易用性

Python 語法易於閱讀,並且使用 Python 進行編碼非常容易和快速。它基本上讀起來就像虛擬碼。

>>> print("hello world!")
hello world!
>>> sum([3, 4, 3,5])
15
>>> max(3, 4, 5, 13,2)
13
>>> min(3, 4, 5, 13, 2)
2

更新於: 2019-07-30

209 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告