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