Python實用技法第2篇:使用deque保留最新的N個元素

Mark發表於2019-02-16

上一篇文章:Python實用技法第1篇:可迭代物件分解為單獨的變數
下一篇文章:Python實用技法第3篇:找到最大或最小的N個元素

1、需求?

做一個有限個數的歷史記錄。

2、解決方案?

deque(maxlen=N),建立一個固定長度的佇列,當有新記錄加入並且佇列已滿時會自動移除最老的那條記錄。

程式碼:

from collections import deque

q=deque(maxlen=3)

q.append(1)
q.append(2)
q.append(3)
print(q)
q.append(4)
print(q)
q.append(5)
print(q)

結果:

deque([1, 2, 3], maxlen=3)
deque([2, 3, 4], maxlen=3)
deque([3, 4, 5], maxlen=3)

如果不指定佇列的大小,也就得到了一個無界限的佇列,可以在兩端執行新增和彈出操作,

程式碼:

from collections import deque

q=deque()
q.append(1)
q.append(2)
q.append(3)
q.append(4)
print(q)
q.appendleft(5)
print(q)
print(q.pop())
print(q)
print(q.popleft())
print(q)

結果:

deque([1, 2, 3, 4])
deque([5, 1, 2, 3, 4])
4
deque([5, 1, 2, 3])
5
deque([1, 2, 3])

上一篇文章:Python實用技法第1篇:可迭代物件分解為單獨的變數
下一篇文章:Python實用技法第3篇:找到最大或最小的N個元素

相關文章