Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでキュー(Queue)を実装するプログラムの書き方

Pythonでキュー(Queue)を実装するには、専用のクラスを作成し、要素を追加・削除するためのメソッドを定義します。その後、クラスのインスタンスを生成し、メソッドを呼び出すことで各種操作を行い、結果をコンソールに表示します。

キューは「先入れ先出し(FIFO:First In First Out)」と呼ばれるデータ構造で、最初に追加した要素が最初に取り出されるという特徴があります。タスク管理やバッファ処理など、さまざまな場面で活用される基本的な構造です。

以下に、Pythonでのキューの実装例を示します。

サンプルコード

class Queue_struct:
    def __init__(self):
        self.items = []

    def check_empty(self):
        return self.items == []

    def enqueue_elem(self, data):
        self.items.append(data)

    def dequeue_elem(self):
        return self.items.pop(0)

my_instance = Queue_struct()
while True:
    print('Enqueue <value>')
    print('Dequeue')
    print('Quit')
    my_input = input('What operation would you perform ? ').split()

    operation = my_input[0].strip().lower()
    if operation == 'Enqueue':
        my_instance.enqueue_elem(int(my_input[1]))
    elif operation == 'Dequeue':
        if my_instance.check_empty():
            print('The queue is empty...')
        else:
            print('The deleted value is : ', my_instance.dequeue_elem())
    elif operation == 'Quit':
        break

実行結果

Enqueue <value>
Dequeue
Quit
What operation would you perform ? Enqueue 45
Enqueue <value>
Dequeue
Quit
What operation would you perform ? Enqueue 56
Enqueue <value>
Dequeue
Quit
What operation would you perform ? Enqueue 89
Enqueue <value>
Dequeue
Quit
What operation would you perform ? Dequeue
Enqueue <value>
Dequeue
Quit
What operation would you perform ? Dequeue
Enqueue <value>
Dequeue
Quit
What operation would you perform ? Quit

コードの解説

  • 必要な属性を持つ「Queue_struct」クラスを定義します。

  • コンストラクタである「__init__」関数の中で、空のリストを作成して初期化します。

  • 「check_empty」メソッドは、リストが空かどうかを判定し、真偽値を返します。

  • 「enqueue_elem」メソッドは、引数で受け取ったデータをリストの末尾に追加します。

  • 「dequeue_elem」メソッドは、リストの先頭から要素を削除し、その値を返します。

  • 「Queue_struct」クラスのインスタンス(オブジェクト)を生成します。

  • whileループによって、ユーザーに実行したい操作の入力を繰り返し求めます。

  • ユーザーの選択内容に応じて、対応する処理が実行されます。

  • 処理結果がコンソールに表示され、「Quit」が入力されるまでプログラムは動作し続けます。

補足:collections.dequeを使った効率的な実装

上記の実装ではリストの先頭から要素を削除する際に「pop(0)」を使用していますが、この操作は要素数が多い場合に計算コストが高くなります。実務では、標準ライブラリの「collections.deque」を使用すると、両端への追加・削除が高速に行えるため、より効率的にキューを実装できます。

  1. Pythonの組み込み関数callable()の使い方をわかりやすく解説

    このチュートリアルでは、Pythonの組み込み関数であるcallable()について詳しく解説します。callable()は引数を1つ受け取り、その引数が呼び出し可能(callable)かどうかを真偽値で返します。Pythonでは、関数やクラスは呼び出し可能なオブジェクトです。一方、整数や浮動小数点数、文字列などの定数値は呼び出すことができないため、callable()はFalseを返します。基本的な構文callable(object)引数に渡したオブジェクトが呼び出し可能であればTrue、そうでなければFalseが返されます。例1:関数が呼び出し可能か確認するまず、関数に対してcallabl

  2. 【Python入門】randint()関数でじゃんけんゲームを実装する方法

    Pythonを使えば、手軽に面白いミニゲームを開発できます。その代表例のひとつが「じゃんけんゲーム」です。本記事では、標準ライブラリのrandomモジュールが提供するrandint()関数を使って、コンピュータと対戦できるじゃんけんゲームを実装する方法を解説します。 実際のじゃんけんでは、プレイヤーは掛け声に合わせて拳(グー)を振り下ろしながら、グー・チョキ・パーのいずれかの手を出します。このプログラムではその流れを再現し、ユーザーの入力とコンピュータのランダムな選択を比較して勝敗を判定します。 じゃんけんゲームの基本ルール まず、じゃんけんの勝敗ルールをおさらいしておきましょう。 グー v