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 的隊列,隊列裡面的值為文件後幾行數據。 

rss_feed