双向队列和普通队列略有不同,其两端都支持进队和出队操作,Python中有一个双向队列的内置模块 deque.

1)创建队列:queue=deque()

2)进队:append()

3)出队:popleft()

4)双向队首进队:appendleft()

5)双向队尾出队:pop()

6)队满自动覆盖

代码示例

from collections import deque

q = deque()

q.append(1)
q.append(2)
q.append(3)
print(q) # deque([1, 2, 3])
print(q.popleft()) # 1
print(q.pop()) # 3
q.appendleft(4)
print(q) # deque([4, 2])

# 队满覆盖
q = deque([1, 2, 3, 4, 5], 3)  
print(1) # deque([3, 4, 5], maxlen=3)

tail函数

以下我们写一个简单的例子,用 queue 封装一个读取文件后n行的函数。

# text.txt
abc
def
ghi

tail函数

from collections import deque
def tail(n):
    with open('text.txt', 'r') as f:
        q = deque(f, 2)
    return q

print(tail(2))
# deque(['def\n', 'ghi'], maxlen=2)

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/read/304