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

Python Queue and Deque:ステップバイステップガイド

Pythonキューは、FIFOルールを使用するリストを先入れ先出しで作成できる組み込みライブラリです。 Python dequeは、反対のルール、LIFOキュー、または後入れ先出しを使用します。どちらもスタックとキューで動作します。


Pythonで作業している場合は、リストではなくアイテムのキューを作成することをお勧めします。たとえば、会議への登録を追跡するプログラムを作成しているとします。リストに誰かを追加するときは、その人をキューの最後に配置し、次に、前の人が入り始めたときにキューを進めてもらいます。

Pythonには、これらのタイプの問題を解決するために設計された組み込みライブラリがあります。キューです。キューはPythonのスタックに似ていますが、主な違いは、キューを使用すると、最後に追加されたアイテムを削除することです。一方、スタックでは、最後に追加されたアイテムを削除します。

このチュートリアルでは、Pythonでのキューの基本と、キューを実装する方法について説明します。

キュー入門書

Pythonリストを操作するときに役立つキューは、リストから入れた順序でリストから取り出したい場合に役立ちます。前の例を使用するには、会議に参加しているときに、に配置する必要があります。最初に登録したときの行の後ろ。ただし、リストに載っている人が入り始めたら、リストのさらに上に移動する必要があります。

キューは、キューがランダムアクセスではないという点で配列やリストとは異なります。つまり、キューに格納されているデータには特定の順序があります。したがって、アイテムをキューに追加する場合は、最後に追加されます。これはfirst-inと呼ばれます 、first-out 、または略してFIFOキュー。

Pythonでは、標準リストをキューとして使用できます。ただし、要素を挿入および削除する場合、リストの先頭で要素を変更するにはリスト内の他のすべての要素を下に移動する必要があるため、リストは非常に遅くなる可能性があります。したがって、ファーストイン、ラストアウトのリストを実装する必要がある場合は、キューを使用する必要があります。

Pythonキュー

では、Pythonでキューをどのように実装しますか?そのためには、組み込みのキューライブラリを利用する必要があります。キューモジュールには、キューに役立つクラスがいくつか含まれていますが、このチュートリアルでは、queue.Queueに焦点を当てます。 クラス。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

地元の劇場で最新の映画を見に行きたい人を追跡するプログラムを構築しているとしましょう。キューを使用して、映画を見たい人の順番待ちリストを追跡することができます。

まず、キュークラスを定義する必要があります。次のコードを使用してこれを行うことができます:

from queue import Queue
waitlist = Queue()

これで、キューを作成する準備が整いました。 put() 関数を使用すると、データをputすることができます キューに入れます。以下のコードでは、映画を見るためにサインアップしたばかりの5人を順番待ちリストに追加します。

waitlist.put('Erin')
waitlist.put('Samantha')
waitlist.put('Joe')
waitlist.put('Martin')
waitlist.put('Helena')

これで、5つの名前がキューに追加されました。エリンが最初にキューに入れられ、次にサマンサが続き、最後のヘレナに到達するまで続きます。 get()を使用してこれを示すことができます そのような機能:

print(waitlist.get())

コードは次を返します:

Erin

ご覧のとおり、エリンは私たちのキューの最初です。キューにある最初の2つの名前を出力する場合は、get()を使用します。 2回機能する:

print(waitlist.get())
print(waitlist.get())

コードは次を返します:

Erin
Samantha

PythonDequeの例

しかし、キューの両端からいくつかのアイテムを追加および削除したい場合はどうでしょうか。これがdeque関数の出番です。dequeを使用することにより、キューの開始または終了から要素を追加および削除できる両端キューを作成できます。 Dequesはlast-infirst-out 、または略してLIFO。

上記と同じ例を使用してみましょう。映画の順番待ちリストの名前を保存します。まず、deque関数を宣言します:

from collections import deque
waitlist = deque()

これで、両端キューが初期化されたので、順番待ちリストの名前のリストを両端キューに追加できます。

waitlist.append('Erin')
waitlist.append('Samantha')
waitlist.append('Joe')
waitlist.append('Martin')
waitlist.append('Helena')

ご覧のとおり、append()を使用しました アイテムをキューに入れる関数。順番待ちリストに保存されている値を確認するには、次のコードを使用できます。

print(waitlist)

コードは次を返します:

deque(['Erin', 'Samantha', 'Joe', 'Martin', 'Helena'])

ご覧のとおり、データはdequeに挿入した順序で保存されています。しかし、キューから最初のアイテムを削除したい場合はどうなりますか? popleft()を使用できます この目標を達成するための機能。次に例を示します。

waitlist.popleft()
print(waitlist)

私たちのコードは私たちのリストの最初の項目を削除しました— Erin —そして以下を返します:

deque(['Samantha', 'Joe', 'Martin', 'Helena'])

deque内のすべてのアイテムを削除する場合は、clear()関数を使用できます。

deque.clear()
print(waitlist)

コードの結果は次のとおりです。

deque([])

ご覧のとおり、両端キューは空ですが、オブジェクトはまだ存在しています。

結論

それでおしまい!この記事では、キューがデータの格納に先入れ先出しのストレージアプローチを採用できるようにするデータ構造の一種である方法について説明しました。キューの使用例の1つは、新製品の順番待ちリストを保持することです。

また、dequeを使用して、キューに要素を追加したり、キューから要素を削除したりできる両端キューを作成する方法についても説明しました。これで、独自のクエリと両端キューを作成する準備が整いました。

Pythonは、さまざまなプロのプログラミング環境で使用されています。 をダウンロードします 無料のキャリアカルマアプリ 今日、Pythonがテクノロジーでの夢のキャリアに突入するのにどのように役立つかを学びましょう!


  1. Pythonインタープリター:ステップバイステップガイド

    Pythonインタープリターは、マシンに正しいバージョンのPythonがインストールされていることを確認しなくてもオンラインで存在するため、Pythonは非常にアクセスしやすく学習できます。この記事では、Pythonインタープリターとは何かについて説明し、オンラインで使用できる、より人気のある、初心者向けのインタープリターをいくつかリストします。 Pythonプログラムはどのように実行されますか? Pythonは、Javaと同様に、インタプリタ言語またはコンパイル言語として完全に分類することはできません。両方のほんの少しです。 この場合にコンパイルされるということは、どの

  2. Pythonのキーと部屋

    N個の部屋があり、部屋0から開始するとします。各部屋には0、1、2、...、N-1の異なる番号があり、各部屋は次のようになります。次の部屋にアクセスするためのいくつかの鍵を持っています。つまり、各部屋iにはキーrooms [i]のリストがあり、各キーrooms [i] [j]は[0、1、...、N-1]の整数です。ここでN=の数部屋。キーrooms[i][j] =vの場合、番号vで部屋が開きます。したがって、入力が[[1]、[2]、[3]、[]]の場合。その後、出力はtrueになります。覚えておくべき点が他にもいくつかあります- 最初は、すべての部屋がロックされ始めます(部屋0を除く)。 部