##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();