はじめに
Pythonのコレクションライブラリの一つであるdequeは、リストに似たデータ構造でありながら、効率的なデータ追加・削除が可能です。本記事では、その中でもdeque.maxlenの機能に焦点を当て、使い方や活用方法を詳しく解説します。
deque.maxlenとは?
deque.maxlenは、collections.dequeオブジェクトに設定できる最大長を示すプロパティです。dequeは双方向キューとして機能し、最大長を設定すると、要素数が上限に達した際に自動的に古い要素が削除されます。
deque.maxlenの基本情報
- deque.maxlenはdequeオブジェクトの最大長を制限するプロパティです。
- 最大長を超える新しい要素が追加されると、先頭の要素が自動的に削除されます。
- 最大長はインスタンス作成時に引数maxlenで設定します。
使い方
from collections import deque
# 最大長3のdequeを作成
dq = deque(maxlen=3)
dq.append(1)
dq.append(2)
dq.append(3)
print(dq) # 出力: deque([1, 2, 3], maxlen=3)
# 4を追加すると先頭の1が自動削除
dq.append(4)
print(dq) # 出力: deque([2, 3, 4], maxlen=3)
deque.maxlenの使用例
キューとしての使用
特定のサイズでデータを保持し、新しいデータが追加されるたびに古いデータを自動的に破棄する場合に役立ちます。
from collections import deque
queue = deque(maxlen=5)
for i in range(1, 8):
queue.append(i)
print(queue) # 最新の5つのデータのみ保持
deque.maxlenの応用例
ロギングシステムへの応用
一定件数のみログを保持するようなシステムで、古いログを自動的に削除する場合に活用できます。
from collections import deque
def log_system(logs):
log_buffer = deque(maxlen=10)
for log in logs:
log_buffer.append(log)
print(list(log_buffer))
logs = [f"Log {i}" for i in range(1, 16)]
log_system(logs)
まとめ
deque.maxlenは、固定長のデータを効率的に管理するのに非常に便利な機能です。データストリームやログシステムなど、古いデータを自動的に破棄しながら最新データを保持するケースに適しています。Python 3.11でも引き続き利用可能なこの機能をぜひ活用してみてください。