【Python入門】キューとスタック|データ構造を作成する

キューとスタック|データ構造を作成する_アイキャッチ プログラミング

※ 当サイトはアフィリエイト広告を利用しています。

levtech-ad
スポンサーリンク

Python基礎として、「キュー」や「スタック」というものがあります。

Pythonを使用する上で理解するべき、最も基本的なデータ構造です。

本記事では、そんなPython基礎となるキューとスタックについて、詳しくご説明します。

こんな人に読んでほしい
  • Python初心者の人
  • Pythonのデータ構造について学びたい人
levtech-ad

キューとスタック

キューとスタックは、いずれも一列に並んだデータ構造です。

両者の違いは、データの取り出し方にあります。

キュー(queue)の構造は、下図左側で表される通り、新しいデータを入れる場合、最も古いデータを取り出します。

この構造は、FIFO(First-In, First-Out)と呼ばれています。

対して、スタック(stack)の構造は、下図右側で表される通り、新しいデータを入れる場合、入れる前の最も新しいデータを取り出します。

この構造は、LIFO(Last-In, First-Out)と呼ばれています。

キューとスタックの説明画像
キューとスタックのデータ構造の違い

キュー

Pythonには標準として、queueモジュールが用意されています。

FIFOキューのコンストラクタとしては、queue.Queue()があります。

キューの作成例を以下にご紹介します。

#input
import queue
q = queue.Queue()

data = ["apple","orange","banana"]

for i in data:
    q.put(i)

print(q.get())
#output
apple

インポートしたqueueモジュールに、”apple”,”orange”,”banana”のデータを格納し、データを1つを取り出すプログラムです。

最初に格納した”apple”が取り出されています。

次に、while not文を使用し、データをすべて取り出してみます。

#input
while not q.empty():
    print(q.get())
#output
apple
orange
banana

格納した順番で、古いものから取り出されていることが分かります。

次に、データ格納上限数を3に指定し、4つのデータを格納してみます。

#input
import queue
q = queue.Queue(3)

data = ["apple","orange","banana","peach"]

for i in data:
    q.put(i,block=False)
#output
queue.Full

キューが格納上限であることを表すエラーが出力されました。

スタック

FIFOキューのコンストラクタとしては、queue.LifoQueue()があります。

スタックの作成例を以下にご紹介します。

#input
import queue
s = queue.LifoQueue()

data = ["apple","orange","banana"]

for i in data:
    s.put(i)

while not s.empty():
    print(s.get())
#output
banana
orange
apple

格納したデータをすべて取り出してみましたが、キューとは逆の順番で取り出されたことが分かるかと思います。

優先順位付きキュー

その他のqueueモジュールとして、優先順位付きキューqueue.PriorityQueue()があります。

データ格納の際に、格納したデータが昇順ソートされるものです。

以下に例をご紹介します。

#input
import queue
p = queue.PriorityQueue()

data = [7,5,6,1,3,2]

for i in data:
    p.put(i)

while not p.empty():
    print(p.get())
#output
1
2
3
5
6
7

まとめ

この記事では、Python基礎となるキューとスタックについて、ご説明しました。

本記事を参考に、ぜひデータ構造を作成してみて下さい。

参考

Python学習用おすすめ教材

Pythonの基本を学びたい方向け

統計学基礎を学びたい方向け

Pythonの統計解析を学びたい方向け

おすすめプログラミングスクール

Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。

私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。

現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。

無料体験ができますので、まずは試してみてください!

\まずは無料体験!/
スポンサーリンク
タイトルとURLをコピーしました