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」を使用すると、両端への追加・削除が高速に行えるため、より効率的にキューを実装できます。
-
Pythonの組み込み関数callable()の使い方をわかりやすく解説
このチュートリアルでは、Pythonの組み込み関数であるcallable()について詳しく解説します。callable()は引数を1つ受け取り、その引数が呼び出し可能(callable)かどうかを真偽値で返します。Pythonでは、関数やクラスは呼び出し可能なオブジェクトです。一方、整数や浮動小数点数、文字列などの定数値は呼び出すことができないため、callable()はFalseを返します。基本的な構文callable(object)引数に渡したオブジェクトが呼び出し可能であればTrue、そうでなければFalseが返されます。例1:関数が呼び出し可能か確認するまず、関数に対してcallabl
-
【Python入門】randint()関数でじゃんけんゲームを実装する方法
Pythonを使えば、手軽に面白いミニゲームを開発できます。その代表例のひとつが「じゃんけんゲーム」です。本記事では、標準ライブラリのrandomモジュールが提供するrandint()関数を使って、コンピュータと対戦できるじゃんけんゲームを実装する方法を解説します。 実際のじゃんけんでは、プレイヤーは掛け声に合わせて拳(グー)を振り下ろしながら、グー・チョキ・パーのいずれかの手を出します。このプログラムではその流れを再現し、ユーザーの入力とコンピュータのランダムな選択を比較して勝敗を判定します。 じゃんけんゲームの基本ルール まず、じゃんけんの勝敗ルールをおさらいしておきましょう。 グー v