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

Pythonスタック:ハウツーガイド

スタックは、幅広い用途を持つ重要なデータ構造です。

プログラミングでは、スタックを使用すると、後入れ先出し(LIFO)の順序でデータを格納できます。これは、スタックに格納されている最後のアイテムが最初に処理されることを意味します。

しかし、Pythonでスタックを作成するにはどうすればよいですか?これが、このガイドで回答する質問です。このガイドを読み終えると、Pythonでスタックを作成して操作するエキスパートになります。

Pythonスタック

スタックは、後入れ先出し(LIFO)の順序でデータを格納します。

この順序がどのように機能するかを理解しやすくするために、プレートのスタックを検討してください。クリーニングするプレートのスタックがある場合、最初に移動するプレートは一番上のプレートです。次に、プレートを移動すると、スタックの下位にあるプレートにアクセスできるようになります。

スタックはPythonのキューの反対です。キューは(先入れ先出し構造を使用しているため)最後に追加されたアイテムを削除しますが、スタックは(後入れ先出し構造を使用しているため)最後に追加されたアイテムを削除します。

スタックは通常、プッシュとポップの2つの操作をサポートします。プッシュするとスタックの一番上にアイテムを追加でき、ポップするとスタックの一番上にあるアイテムを削除できます。

Pythonでは、スタックを作成するために使用できる主なアプローチが2つあります。組み込みリストを使用する方法とcollections.deque()を使用する方法です。 クラス。これらの各アプローチがどのように機能するかを分析してみましょう。

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

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

Python組み込みリスト

組み込みのリストデータ型を使用すると、Pythonでスタックを作成できます。

Pythonリストは配列として実装されているため、アイテムを簡単に追加および削除できます。さらに、リストに値を挿入する順序が保持されるため、リストの最初と最後の項目を簡単に削除できます。

クラス内の宿題のリストを格納するスタックを作成するとします。教師は、これらの課題を山に表示される順序で採点したいと考えています(したがって、最初に渡された課題はスタックの一番下になり、最後に渡された課題はスタックの一番上になります)。

スタックにアイテムを追加

スタックにアイテムを追加するには、append()を使用できます 方法。次のコードを使用して、宿題の割り当てスタックを作成できます。

assignments = []

assignments.append("Hannah")
assignments.append("Benny")
assignments.append("Gordon")

print(assignments)

コードは次のようになります:

['Hannah','Benny','Gordon']

このコードでは、最初にassignmentsというリストを宣言します。 。次に、append()を使用します 渡された割り当てのリストに3つの名前を追加する方法。追加する名前は、順番に、ハンナ、ベニー、ゴードンです。ゴードンは最後に課題を提出したため、リストの最後の位置に表示されます。

スタックからアイテムを削除する

ゴードンの課題を採点し、次に採点するものを見つけたいとします。これには、スタックの一番上にあるアイテムを削除することが含まれます。

スタックからアイテムを削除するには、pop()を使用できます 方法。スタックの一番上のアイテムを削除するために使用できるコードは次のとおりです。

assignments = []

assignments.append("Hannah")
assignments.append("Benny")
assignments.append("Gordon")
assignments.pop()

print(assignments)

コードは次のようになります:

['Hannah','Benny']

ゴードンの名前は、pop()を使用してスタックから削除されました 、したがって、スタックにはHannahとBennyの2つの名前しか含まれていません。

collections.dequeクラス

コレクションライブラリのdequeクラスを使用すると、両端キューを作成できます。

dequeオブジェクトは、二重にリンクされたリストとして実装されます。つまり、要素を挿入および削除するときに、強力で一貫したパフォーマンスが得られます。さらに、コレクションライブラリはPython標準ライブラリの一部であるため、外部ライブラリをダウンロードしなくてもコードにインポートできます。

collections.dequeを操作するには クラスの場合、最初にimportステートメントを使用してコードにインポートする必要があります:

from collections import deque

以前の宿題の例に戻って、collections.dequeクラスがどのように機能するかを説明しましょう。

Dequeスタックにアイテムを追加する

dequeスタックにアイテムを追加するには、append()を使用できます。 方法。 dequeクラスを使用して、宿題の割り当てでキューを作成するとします。このコードを使用してこれを行うことができます:

from collections import deque

assignments = deque()

assignments.append("Hannah")
assignments.append("Benny")
assignments.append("Gordon")

print(assignments)

コードは次のようになります:

deque(['Hannah','Benny','Gordon'])

コードを分解してみましょう。まず、コレクションライブラリからdequeクラスをインポートします。次に、deque()を使用して両端キューを作成します それを変数assignmentsに割り当てます 。

次に、割り当ての両端キューに、ハンナ、ベニー、ゴードンの3つの名前を追加します。最後に、割り当てキューの内容をコンソールに出力します。

この例では、データがスタックではなく両端キューとして格納されていることがわかります(結果がdeque()で囲まれていることで示されます。 )。これは、データがスタックのように機能しているにもかかわらず、deque構造を使用しているためです。

Dequeスタックからアイテムを削除する

dequeスタックからアイテムを削除するには、pop()を使用できます。 方法。

ゴードンとベニーズの課題を採点したとしましょう。それらをスタックから削除するには、次のコードを使用できます。

from collections import deque

assignments = deque()

assignments.append("Hannah")
assignments.append("Benny")
assignments.append("Gordon")
assignments.pop()
assignments.pop()

print(assignments)

コードは次のようになります:

deque(['Hannah'])

このコードでは、最初に3つの値を持つdequeスタックを作成します。次に、pop()を実行します ステートメントを2回。 pop()のたびに ステートメントが実行されると、スタックの一番上のアイテムが削除されます。これは、Gordon、次にBennyの値がスタックから削除され、Hannahがスタックに残っている唯一のアイテムとして残ることを意味します。

Python dequeクラスの詳細については、Pythonキューとdequeに関するチュートリアルをお読みください。

結論

スタックを使用すると、後入れ先出しの順序でデータを保存できます。 Pythonでスタックを実装する方法はいくつかありますが、最も実用的な2つの方法は、Pythonの組み込みリスト構造を使用するか、collections.deque()を使用することです。 クラス。

このチュートリアルでは、例を参照して、リストとcollections.deque()を使用してPythonでスタックを作成する方法について説明しました。 。これで、プロのPython開発者のように独自のスタックを作成する準備が整いました。


  1. Python Hello World:ハウツーガイド

    Pythonの「HelloWorld」プログラムは通常、コーダーがPythonで作成する最初のプログラムです。このプログラムは、printステートメントを使用してPythonコンソールに文字列を表示します。プログラムは次のようになります:print(“ Hello World”)。 Pythonバージョンが機能することを確認するために作成できる最初のプログラムの1つは、「HelloWorld」です。プログラムを作成するには、ターミナルまたは選択したコードエディター(Visual Studio Code、Vimなど)の2つの方法があります。 開始するには、マシンにPython3がインストー

  2. Pythonでのマージ間隔

    間隔のコレクションがあるとすると、重複するすべての間隔をマージする必要があります。したがって、間隔が[[1,3]、[2,6]、[8,10]、[15,18]]の場合、マージ後の間隔は[[1,6]、[8,10]になります。 ]、[15,18]]。これは、重複する2つの間隔があり、間隔が[1,3]と[2,6]であり、これらが[1,6]にマージされているためです。 手順を見てみましょう- 間隔リストの長さが0の場合、空白のリストを返します クイックソートメカニズムを使用して間隔リストを並べ替える stack:=空のスタックで、intervals[0]をスタックに挿入します 範囲1から間隔の長さの