【Python入門】Pythonのdeque.maxlenとは?使い方と活用方法を徹底解説(Python 3.11)

Python

はじめに

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でも引き続き利用可能なこの機能をぜひ活用してみてください。