Python:隊列deque
最近更新時間 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 的隊列,隊列裏面的值為文件後幾行數據。