python内置双向队列
python的内置模块是一个双向队列,双向队列其实和栈很相似,栈是支持一端push和pop操作;双向队列则支持两端push和pop操作,即队首入队和出队,队尾入队和出队。
导入库:from collections import deque
创建队列:queue = deque()
进队(rear):append()
出队(front):popleft()
双向队列队首进队:appendleft()
双向队列队尾出队:pop()
代码如下:
from collections import deque
q =deque() # deque(iterable,maxsize)
q.append(1)
print(q.popleft())
# 双向队列
q.appendleft(2) # 队首进队
print(q.pop()) # 队尾出队
使用内置模块的话,队列满了是不会报错的,而是将之前的值进行覆盖,我们可以通过这样的一个特性来进行应用,例如:可以得到一个文档的最后几行。
代码如下:
from collections import deque
def tail(n):
with open('1.txt','r') as f:
q = deque(f,n)
return q
# 内置模块的size长度就是能输出多少个,和我们自己的队列会缺少一个不同
for line in tail(4):
print(line,end='')