来源:https://blog.ansheng.me/article/python-full-stack-way-digital-datda-type/
队列(queue),是先进先出(FIFO, First-In-First-Out)的线性表,在具体应用中通常用链表或者数组来实现,队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作,队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。
摘录维基百科
如图所示
队列的接口
一个队列至少需要如下接口:
| 接口 |
描述 |
| add(x) |
入队 |
| delete() |
出队 |
| clear() |
清空队列 |
| isEmpty() |
判断队列是否为空 |
| isFull() |
判断队列是否未满 |
| length() |
队列的当前长度 |
| capability() |
队列的容量 |
然而在Python中,可以使用collections模块下的deque函数,deque函数提供了队列所有的接口,那么先让我门看看队列deque函数提供了那些API把:
collections.deque是双端队列,即左右两边都是可进可出的
| 方法 |
描述 |
| append(x) |
在队列的右边添加一个元素 |
| appendleft(x) |
在队列的左边添加一个元素 |
| clear() |
从队列中删除所有元素 |
| copy() |
返回一个浅拷贝的副本 |
| count(value) |
返回值在队列中出现的次数 |
| extend([x..]) |
使用可迭代的元素扩展队列的右侧 |
| extendleft([x..]) |
使用可迭代的元素扩展队列的右侧 |
| index(value, [start, [stop]]) |
返回值的第一个索引,如果值不存在,则引发ValueError。 |
| insert(index, object) |
在索引之前插入对象 |
| maxlen |
获取队列的最大长度 |
| pop() |
删除并返回最右侧的元素 |
| popleft() |
删除并返回最左侧的元素 |
| remove(value) |
删除查找到的第一个值 |
| reverse() |
队列中的所有元素进行翻转 |
| rotate() |
向右旋转队列n步(默认n = 1),如果n为负,向左旋转。 |
现在我们在Python中测试下这些个API的使用吧。
入队操作
|