##Queue - 隊列 Queue 是一個 **FIFO(先進先出)**的數據結構,併發中使用較多,能夠安全地將對象從一個任務傳給另外一個任務。python
Queue 和 Stack 在 Python 中都是有* list ,[] *實現的。 在python 中list是一個dynamic array, 能夠經過append在list的尾部添加元素, 經過**pop()**在list的尾部彈出元素實現Stack的FILO, 若是是pop(0)則彈出頭部的元素實現Queue的FIFO。api
示例:數組
queue = [] # same as list() size = len(queue) queue.append(1) queue.append(2) queue.pop(0) # return 1 queue[0] # return 2 examine the first element
###Priority Queue - 優先隊列 應用程序經常須要處理帶有優先級的業務,優先級最高的業務首先獲得服務。所以優先隊列這種數據結構應運而生。優先隊列中的每一個元素都有各自的優先級,優先級最高的元素最早獲得服務;優先級相同的元素按照其在優先隊列中的順序獲得服務。安全
優先隊列可使用數組或鏈表實現,從時間和空間複雜度來講,每每用二叉堆來實現。數據結構
Python 中提供heapq的lib來實現 priority queue. 提供push和pop兩個基本操做和heapify初始化操做.併發
###Deque - 雙端隊列 雙端隊列(deque,全名double-ended queue)可讓你在任何一端添加或者移除元素,所以它是一種具備隊列和棧性質的數據結構。app
Python Python 的list就能夠執行相似於deque的操做, 可是效率會過於慢。 爲了提高數據的處理效率, 一些高效的數據結構放在了collections中。 在collections 中提供了deque的類, 若是須要屢次對list執行頭尾元素的操做, 請使用deque。code
dq = collections.deque();