Python:队列deque
Lasted 2020-01-31 11:09:46
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。
collections.deque 返回一个双向队列对象,从左到右初始化(用方法 append()) ,从 iterable (迭代对象) 数据创建。如果 iterable 没有指定,新队列为空。
虽然 list 对象也支持类似操作,不过这里优化了定长操作和 pop(0) 和 insert(0, v) 的开销。它们引起 O(n) 内存移动的操作,改变底层数据表达的大小和位置。
1. 创建队列
from collections import deque
queue = deque(["one", "two"])
queue.append("three")
print(queue)
print(queue.popleft())
print(queue)
deque(['one', 'two', 'three']) one deque(['two', 'three'])
2. 返回文件最后几行数据
deque 可实现类似 Unix tail 的过滤功能
from collections import deque
def tail(filename, n=10):
'Return the last n lines of a file'
with open(filename) as f:
return deque(f, n)
text = tail('docsxyz.md')
print(text)
deque(['docsxyz.com\n', 'docsxyz\n'], maxlen=10)
函数返回一个长度为 10 的队列,队列里面的值为文件后几行数据。