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

Python

はじめに

Pythonは初心者から上級者まで幅広く利用されるプログラミング言語で、多様なデータ構造を提供しています。その中で、deque(デック)は特に便利なデータ構造の一つです。dequeは、double-ended queueの略で、データを両端から追加・削除できるように設計されています。この記事では、Pythonのdequeについて詳しく解説し、初心者でも簡単に理解できるようにします。

dequeとは?

dequeは、Pythonのcollectionsモジュールに含まれるデータ構造で、両端から要素を追加・削除できることが特徴です。これにより、キュー処理やスタック処理を効率的に行うことができます。

dequeの基本情報

  • データ構造: 双方向キュー(double-ended queue)
  • 特徴: 先頭と末尾から要素を追加・削除可能
  • 使用モジュール: collections
  • 主な用途: キュー処理、スタック処理

dequeの特徴/良い点/悪い点

  • 良い点:
    • 高速な操作: 先頭と末尾からの追加・削除がO(1)で可能
    • メモリ効率が良い: リストよりも先頭の操作が効率的
  • 悪い点:
    • ランダムアクセスが遅い: リストに比べて要素へのランダムアクセスが遅い
    • インポートが必要: collectionsモジュールからインポートする必要がある

dequeの新規作成の方法

dequeは、空の状態で作成することも、初期値を持たせて作成することもできます。

from collections import deque

# 空のdequeを作成
d = deque()

# 初期値を持つdequeを作成
d = deque([1, 2, 3])

dequeの作成の方法(他のデータ型からの変換)

リストやタプルからもdequeを作成できます。

# リストからdequeを作成
my_list = [1, 2, 3]
d = deque(my_list)

# タプルからdequeを作成
my_tuple = (1, 2, 3)
d = deque(my_tuple)

dequeの削除の方法

dequeから要素を削除するには、pop()やpopleft()メソッドを使用します。

# 末尾の要素を削除
d.pop()

# 先頭の要素を削除
d.popleft()

dequeのプロパティ一覧

名称機能説明計算量(オーダー)
maxlen最大長さを設定
len()要素数を取得O(1)

dequeの関数一覧

名称機能説明計算量(オーダー)
append(x)末尾に要素を追加O(1)
appendleft(x)先頭に要素を追加O(1)
pop()末尾の要素を削除して返すO(1)
popleft()先頭の要素を削除して返すO(1)
extend(iterable)末尾に複数の要素を追加O(k)
extendleft(iterable)先頭に複数の要素を追加O(k)
clear()全要素を削除O(n)
count(x)指定要素の数を返すO(n)
index(x)指定要素のインデックスを返すO(n)

dequeの比較

  • リストと比較:
    • 先頭操作: dequeの方が効率的
    • ランダムアクセス: リストの方が速い
  • キューと比較:
    • 双方向操作: dequeは両端から操作可能
    • FIFO制約: キューは先入れ先出しのみ

まとめ

Pythonのdequeは、両端から要素を追加・削除できる双方向キューで、特に大量のデータを効率的に処理する際に有用です。リストやキューと比較して、先頭操作が高速な点が特徴です。初心者でも簡単に使えるように、実際のコード例を通じて理解を深めてみてください。