Python優先キュー

| | | | | | | | | | | | | | | | | | | | | | | | | | | |

Python優先キュー:ガイド

Aは、Python優先キューデータを特定の順序で格納します。 Pythonで優先キューを実装する方法は2つあります。キュークラスの使用とheapqモジュールの使用

リスト内の各項目の値に基づいてデータを並べ替えることができます。たとえば、最も高い値を最初にリストに表示し、最も低い値を最後のリストに表示したい場合があります。

は優先待機のキューです。優先待機のキューはデータです。キーの値に基づいて昇順でデータを格納する構造。これにより、キュー内の最小値と最大値に簡単にアクセスできます。

このチュートリアルでは、優先待機のキューを作成するためにリストを使用しない理由を説明します。 Python優先度付きキューを作成するために使用できる2つのより効率的なアプローチを紹介します。

Python優先度付きキューとは何ですか?

優先度付きキューは、どのアイテムが最も優先度が高いか順にデータを格納するキュー。優先度付きキュー内の各アイテムの優先度は、アイテムの値に基づいて決定されます。

計算では、キューは、FIFO内のメモリの要素が(先入れ先出し)順になるデータ構造です。 -外)。この機能を使用すると役立つシナリオがいくつかあります。

たとえば、レストランの注文追跡アプリを作成しているとします。注文する人は、後で注文することによって、最初に人の前で提供されなければなりません。 。コマンドを追跡するには、キューを使用する必要があります

Pythonで優先度付きキューを設定するには、次の2つの方法があります。

  • PriorityQueueQueueクラスの使用
  • heapqモジュールの使用

リスト構造を使用して優先度付きキューを設定できますが、この戦略は、キュークラスまたはモジュールPriorityQueueヒープを使用するよりも効率的ではありません

優先キュープレート:.Queue.PriorityQueue

queue.PriorityQueue はPython優先キューを作成します。このクラスはPythonコードライブラリの一部です。インポートする必要がありますこのクラスを使用するキューライブラリ。PriorityQueueからアイテムを取得するには、get()メソッドを使用できます。

PriorityQueueクラスにアクセスするには、コードにインポートする必要があります。これを実行できます。この import Pythonステートメントを使用する:

キューを作成するとしますd` conrtでチケット所有者を優先的に待機します。次のコードを使用してこれを行うことができます:

コードは次を返します:

このコードでは、最初にPriorityQueueクラスを file ライブラリからインポートするために、 ticket_holdersと呼ばれる優先キュー。次に、優先キューに3つのタプル、ストアチケット番号、およびチケットに関連付けられた名前を配置します。

Pythonループを使用しますは、 ticket_holders優先度キュー内の各アイテムを調べます。次に、 get()を使用してこの要素を取得します。

queue.PriorityQueueメソッドは効果的で使いやすいため、必要なときに最適です。優先待ちのキューを作成します。

Pythonheapq優先キューモジュール

heapqモジュールを使用すると、Python優先キューを定義できます。 heapqデータ構造は、優先順位に従ってアイテムを削除します。 heapq構造では、最小値が最低の優先度を持ち、最高値が最高の優先度を持ちます

前heapqモジュールを使用できる場合は、最初に次のインポート命令を使用してコードにインポートする必要があります。

どちらも前の例に進みます。コンサートのチケット所有者に関する情報を格納するための優先キューを作成するとします。次に、heapqモジュールとこのプログラムを使用してこれを行うことができます。

コードは次を返します:

最初に、heapqライブラリをインポートし、次にPython変数はticket_holdersと呼ばれます。 heappush()メソッドを使用して、3つのタプルを優先キューに入れました。このキューには、各チケット所有者のチケット番号と各チケット所有者の名前が格納されます。

次に、優先キューの各アイテムを調べながらループを作成しました。このループは、 heappop()を使用して待機キューの最上位の要素を削除します。次に、削除されたアイテムがコンソールに出力されます。ご覧のとおり、キュー内のすべてのアイテムが優先度順に印刷されます。

リストを保持しない理由

技術的には、<を使用して優先度キューを作成できます。 a href = "/ python-network/">pythonリストのデータ構造。これを行うには、リストを作成してから昇順で並べ替える必要があります。

ただし、これは優先度付きキューを維持するための比較的非効率的な方法です。リスト内のアイテムを編集するときは、リストを再配置する必要があります。これには時間がかかります。

いくつかの値を保存するだけでよい場合は、従来のリストを優先キューとして使用できます。ただし、より大きなキューを作成する場合は、リストは適切なオプションではありません

参考までに、リストを使用した優先キューの例を見てみましょう。最初のコンサートに参加する必要があるチケット所有者の順序を格納する優先キューを作成するとします。次のコードを使用して、このキューを作成できます。

コードは次を返します:

ticket_holders というリストを作成し、リストに3つのタプルを追加しました。各タプルには、チケット所有者のチケット番号とその名前が含まれていました。次に、Pythonの sort()関数を使用して、チケット所有者のリストを逆の順序で並べ替えました。

ticket_holders listとリストの一番上にあるアイテム。次に、コードは削除されたアイテムをコンソールに出力します。

結論

キューの優先度を作成するための最も一般的な2つは、heapqまたはqueueモジュールを使用することです。 PriorityQueueクラス。リストを優先キューとして使用することは技術的には可能ですが、このアプローチはうまく機能しません。

このチュートリアルでは、例を参照して、Pythonで優先キューを作成する方法について説明しました。これで準備が整いました。 Pythonプロのように優先キューの構築を開始するための知識が必要です!

Pythonの学習に関するその他のヒントについては、Python学習ガイド<を参照してください。 /a>。