Python キュー(queue)を使う(先入れ先出し)

スポンサーリンク

Pythonではキュー(queue)を使うことができます。

キュー(queue)は先入れ先出しに対応したリストのことです。

Pythonには同じような配列であるリスト(list)がありますが、リストに比べると要素を取り出したらなくなるという点が大きく違うところですね。これをリストでやると処理が遅くなってしまいます。

今回はPythonのキュー(queue)を使う方法を解説します。

キュー(queue)の使い方

キュー(queue)の構文

from collections import deque

# キューの右側に追加
キュー変数.append(追加する値)

# キューの左側に追加
キュー変数.appendleft(追加する値)

# キューの左を取り出す
キュー変数.popleft()

# キューの右を取り出す
キュー変数.pop()

キューは「collections」というコンテナデータ型を使用します。「collections.deque」でキューを操作します。

キューの考え方として、先に追加したものが左側、後に追加したものは右側に追加されます。左から順番というのが原則です。

キューに追加

「append」でキューの右側(最後)に追加します。「appendleft」でキューの左側(最初)に追加します。

キューから取り出す

「popleft」で左側(最初)から順番にとりだします。「pop」で右側(最後)から順番にとりだします。

 

キュー(queue)を使って取り出す

from collections import deque

que = deque(['python', 'java', 'c#'])
que.popleft()
#[結果] 'python'

que.popleft()
#[結果] 'java'

que.popleft()
#[結果] 'c#'

que.popleft()
#[結果] IndexError: pop from an empty deque

リストをキュー型にし、「popleft」で1つずつ取り出しました。しかし要素がなくなってしまうとエラーが発生してしまいました。

キュー(queue)を使って取り出す(エラー対策)

from collections import deque

que = deque(['python', 'java', 'c#'])

while len(que) > 0:
    que.popleft()

#[結果] 'python'
#[結果] 'java'
#[結果] 'c#'

キューから1つずつ順番に取り出し、要素がなくなったら終了するようにしました。これで「popleft」でエラーがでることがなくなりました。

キュー(queue)から削除する

from collections import deque

que = deque(['python', 'java', 'c#'])

que.popleft()
#[結果] 'python'

que.clear()

que.popleft()
#[結果] IndexError: pop from an empty deque

キューから「clear」で残りの要素を削除しました。「popleft」で取り出すと取り出す要素がないためエラーになりました。

以上、Pythonでキュー(queue)を使う方法でした。

コメント