python 队列
一、队列
队列是先进先出(FIFO—first in first out)线性表,特殊之处在于它只允许在队头(表的前端(front))进行删除操作(出队),而在列尾(表的后端(rear))进行插入操作(入队)。
空队列:队列中没有元素。
二、队列操作:
1、初始化队列(包括空队列)
2、入队操作
3、出队操作:当
4、读队头元素
5、判队空操作
三、队列的python实现
(一)导入队列模块
from collections import deque
(二)队列的操作
1、创建队列
(1) 格式:deque([iterable[, maxlen]])
(2)创建队列对象
建立空队列
>>> emptyDeque = deque()
>>> emptyDeque
deque([])
建立从其他迭代器建立队列
>>> MyDeque = deque (["i1","i2","i3","i4"],3)
>>> MyDeque
deque(['i2', 'i3', 'i4'], maxlen=3)
2、出队
(1)提出两种出队形式:deque.pop() (从右端出队) deque.popleft(从左端出队),若队列为空,会产生异常(Index Error)
(2)
>>> MyDeque
deque(['i2', 'i3', 'i4'], maxlen=3)
>>> MyDeque.pop()
'i4'
>>> MyDeque
deque(['i2', 'i3'], maxlen=3)
>>> MyDeque.popleft()
'i2'
3、入队
(1)提出两种出队形式:deque.append() (从右端出队) deque.appendleft(从左端出队)
(2)
>>> mydeque
deque([])
>>> mydeque.append(1)
>>> mydeque
deque([1])
>>> mydeque.append(2)
>>> mydeque
deque([1, 2])
>>> mydeque.appendleft(0)
>>> mydeque
deque([0, 1, 2])
4、取队尾或队首元素信息
1、使用列表的索引 deque[0[, deque[-1],若空队列会产生索引异常。
2、
>>> mydeque
deque([0, 1, 2])
>>> mydeque[0]
0
>>> mydeque[-1]
2
5、判断队列是否为空
1、使用列表len(deque) ,结果为0就为空
2、
>>> mydeque
deque([])
>>> len(mydeque)
0
总结:
通过 pop ,apendleft 或者popleft ,append相互配合就可以实现队列的基本操作。
四、deque的常用操作
相比列表(list)添加 popleft()、appendleft() 、rotate(),其他和列表都一样。
项目 | 操作 | 说明 |
---|---|---|
创建 | deque() | 包括空队列 |
clear() | 清空队列 | |
copy() | 队列的副本(=浅拷贝) | |
操作符 | [] | 索引(访问、更新、删除) |
+ | 联接两个队列 | |
* | 重复队列 | |
关系运算符 | 表示两个队列的关系 | |
增加元素 | append(value) | 在队列右端增加元素 |
appendleft(value) | 在队列左端增加元素 | |
extend(seq) | 在把seq添加到队列右端 | |
extendleft(seq) | 把seq添加到队列左端 | |
insert(index,value | 在相应位置插入元素 | |
减少元素 | pop | 从队列右端取出元素并返回 |
popleft | 从队列左端取出元素并返回 | |
remove(value) | 从队列删除value | |
del de[index] | 从队列删除index索引位置的元素 | |
clear | 清空队列 | |
查询 | count | 查询元素在队列出现次数 |
index() | 元素在队列首次出现的索引 | |
排序 | reverse | 队列倒序排列 |
rotate | 队列首尾循环一次 |