當前位置:成語大全網 - 新華字典 - python目前三方提供的可用編程模塊函數庫組件規模有多大

python目前三方提供的可用編程模塊函數庫組件規模有多大

C++,Java和Python是競爭性編程的三種最常見的語言。在本文中,我們將從競爭性編程和面試準備的角度重點介紹最重要的Python模塊。

list:動態大小的數組,允許在不關心數組大小的情況下進行插入和刪除。它還具有普通數組的優點,例如隨機訪問和緩存友好性。list也可以用作隊列和堆棧。

deque:Dequeue支持在O(1)時間內在兩端進行插入和刪除。由於它是使用數組實現的,因此它也允許隨機訪問。我們可以使用dequeue來實現隊列和堆棧。關於Deque的示例問題是,訪問所有的汽油泵和所有大小為k的子陣列的最大值。

請註意,Python中沒有用於隊列(Queue)和堆棧(Stack)的模塊。我們可以使用列表(list)或雙端隊列(deque)來實現這些。首選雙端隊列(deque)實現,尤其是對於隊列,因為在列表前面進行插入/刪除很慢。

在我們希望具有FIFO項目順序的情況下,隊列(Queue)很有用。問題示例包括:用給定的數字生成數字,流中的第壹個非重復字符,樹及其變體的級序遍歷,圖的BFS及其變體。

set和dict:它們都實現了哈希。當我們有鍵的集合時,我們使用set。當我們有鍵值對時,我們使用字典(dictionary)。當我們希望快速搜索、插入和刪除時非常有用(這三個操作都是O(1))。這是業界使用最多的數據結構之壹,也是學術界最低估的數據結構之壹。常見的問題有:離散元素的計數、數組項的頻率、零和子陣、兩個未排序數組的並集、交集等。

heapq:默認情況下實現Min Heap。我們也可以創建最小堆。只要我們希望有效地找到最小或最大元素,就使用它。它用於實現流行的算法,例如Prim算法,Dijkstra最短路徑,霍夫曼編碼,K個最大元素,購買和合並K個排序數組的最大玩具,流的中位數。

sorted:對列表等序列進行排序。基於排序的示例問題包括:合並重疊間隔,所需的最小平臺。第K個最小元素,求給定和的三元組。

bisect:用於二進制搜索。基於二進制搜索的示例問題有:查找第壹次出現的索引、計數出現次數、峰值元素、兩個排序數組的中值。

註意:與C++ STL和Java集合(Collections)不同。Python標準庫包含自平衡BST的實現。在Python中,我們可以使用bisect模塊來保留壹組排序後的數據。我們還可以使用PyPi模塊,例如rbtree(紅黑樹的實現)和pyavl(AVL樹的實現)。