【Python】queue(キュー)の使い方(先入れ先出し)

Pythonのqueue(キュー)の使い方について。

この記事の内容はコチラです

  • Pythonでfifo(先入れ先出し)をする
  • queueの使い方を知る

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

キュー(queue)の使い方

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

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

queueの構文

from collections import deque

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

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

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

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

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

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

queueに追加

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

queueから取り出す

「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

リストをqueue型にし、「popleft」で1つずつ取り出しました。しかし、上の例の通り、3つの要素を取り出し終わって要素がなくなってしまうとエラーが発生してしまいました。

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

from collections import deque

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

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

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

queueから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

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

以上、Pythonのqueue(キュー)の使い方でした。

コメント