0Pricing
Python Academy · レッスン

deque

高速な両端キューを使用します

「deque」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

dequeとは何ですか?

deque(「デック」と読みます)は、collectionsモジュールの両端キューです。両方の端で高速に要素を追加・取り出しできます。

from collections import dequeでインポートします。

from collections import deque
d = deque([1, 2, 3])
print(d)

なぜ単なるlistではいけないのですか?

リストでは、先頭に要素を挿入したり先頭から削除したりすると、すべての要素を移動する必要があるため低速です。dequeは先頭での操作を定数時間で行えるため、キューに最適です。

from collections import deque
d = deque(['b', 'c'])
d.appendleft('a')
print(d)

両端への追加

右端に追加するには.append()を、左端に追加するには.appendleft()を使用します。

from collections import deque
d = deque()
d.append(1)
d.append(2)
d.appendleft(0)
print(d)

両端からの取り出し

.pop()は右端の要素を削除して返し、.popleft()は左端の要素を削除します。どちらも高速です。

from collections import deque
d = deque([10, 20, 30])
print(d.pop())
print(d.popleft())
print(d)

シンプルなキュー(FIFO)

先入れ先出し(FIFO)にするには、右端に追加し、左端からpopleftします。要素は追加された順番に取り出されます。

from collections import deque
queue = deque()
queue.append('first')
queue.append('second')
print(queue.popleft())
print(queue.popleft())

maxlenを指定したサイズ制限付きdeque

maxlenを指定してサイズの上限を設定します。上限に達した状態で一方の端に追加すると、もう一方の端から要素が自動的に破棄されます。最近の履歴を保持するのに便利です。

from collections import deque
recent = deque(maxlen=3)
for n in [1, 2, 3, 4, 5]:
    recent.append(n)
print(recent)

要素の回転

.rotate(n)は要素を右にnステップ移動します。nが負の場合は左に回転します。要素は端を越えると反対側に循環します。

from collections import deque
d = deque([1, 2, 3, 4, 5])
d.rotate(2)
print(d)
d.rotate(-1)
print(d)

まとめて拡張

.extend()は右端に複数の要素を追加し、.extendleft()は左端に追加します。ただし、extendleftで追加した要素の順序は逆になります。

from collections import deque
d = deque([3])
d.extend([4, 5])
d.extendleft([2, 1])
print(d)

インデックス指定と長さ

dequeはリストと同じようにインデックスでアクセスでき、len()も使用できます。中央の要素へのアクセスは両端より遅いため、端に対する操作を優先してください。

from collections import deque
d = deque(['a', 'b', 'c'])
print(d[0])
print(d[-1])
print(len(d))

クリアと反転

.reverse()はdequeをその場で反転し、.clear()は空にします。どちらもdequeを直接変更します。

from collections import deque
d = deque([1, 2, 3])
d.reverse()
print(d)
d.clear()
print(d)

出現回数のカウント

リストと同様に、dequeには値の出現回数を数える.count()があります。

from collections import deque
d = deque([1, 2, 2, 3, 2])
print(d.count(2))

理解度チェック

dequeを使ってFIFOキューを作成します。正しい先入れ先出しの順序になるメソッドの組み合わせはどれですか。

復習:deque

次のことを学びました。dequeは次の特徴を持ちます。

  • リストとは異なり、両端でappendとpopを高速に実行できます。
  • 左側で使うappendleftとpopleftがあります。
  • maxlenでサイズを制限し、最近の要素だけを保持できます。
  • キュー形式の処理に使えるrotate、extend、reverse、countを備えています。
from collections import deque
q = deque(maxlen=2)
for x in ['a', 'b', 'c']:
    q.append(x)
print(q)

よくある質問

「deque」レッスンは無料ですか?

はい。「deque」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「deque」で何を学びますか?

高速な両端キューを使用します ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「deque」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Counter
  2. defaultdict
  3. deque
  4. namedtupleとOrderedDict
← Python Academyに戻る