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(キュー)の使い方でした。
コメント