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

Pythonでのスタックおよびキューとしてのリストの使用


この記事では、Python3.xのスタックとキューの構造について学習します。またはそれ以前。ここでは、これらのデータ構造内での動作と変更について説明します-

これには-

が含まれます
  1. 挿入操作(プッシュ、エンキュー)
  2. 削除操作(ポップ、デキュー)
  3. 表示/トラバース操作

前提条件 :リストとリスト操作

関連データ構造 :リスト操作

関連画像

Pythonでのスタックおよびキューとしてのリストの使用

スタック

スタックでは、オブジェクトは互いに重ねて格納され、これらのオブジェクトは到着の逆の順序で削除されます。つまり、LIFOの概念に従います。 LIFOは、スタックデータ構造で後入れ先出しタイプの配置に従うことを意味します。

スタックでの操作-

  • 要素の追加/追加:これにより、追加されたアイテムの数だけスタックサイズが増加し、追加は上端、つまりスタックの一番上で行われます。
  • 要素の削除/削除-これには2つの条件が含まれます-スタックが空の場合、削除できる要素がありません。つまり、スタックでアンダーフローが発生するか、スタックに特定の要素が存在する場合、上部に存在する要素が削除されます。 。これにより、削除された要素の数だけスタックのサイズが縮小されます。
  • トラバース/表示-これには、スタックの各要素にアクセスして画面に表示することが含まれます。

ピークの追加機能を挿入することもできます。つまり、スタックの一番上で値を取得します。

スタックの特徴

  • 挿入順序は保持されます。
  • スタックでは重複が許可されています。
  • 同様のデータ型ストレージ。
  • 解析操作で非常に役立ちます。

サンプルコード

def isEmpty(stk): # checks whether the stack is empty or not
   if stk==[]:
      return True
   else:
      return False

def Push(stk,item): # Allow additions to the stack
   stk.append(item)
   top=len(stk)-1

def Pop(stk):
   if isEmpty(stk): # verifies whether the stack is empty or not
      print("Underflow")
   else: # Allow deletions from the stack
      item=stk.pop()
      if len(stk)==0:
         top=None
      else:
         top=len(stk)
         print("Popped item is "+str(item))

def Display(stk):
   if isEmpty(stk):
      print("Stack is empty")
   else:
      top=len(stk)-1
      print("Elements in the stack are: ")
      for i in range(top,-1,-1):
         print (str(stk[i]))

# executable code
if __name__ == "__main__":
   stk=[]
   top=None
   Push(stk,1)
   Push(stk,2)
   Push(stk,3)
   Push(stk,4)
   Pop(stk)
   Display(stk)

上記のコードは、Python3.xのスタック機能を実装しています。またはそれ以前。複数のif-elseステートメントを使用してユーザーに選択肢を提供することにより、メニュー方式のプログラムを作成できます。スタックをフレーミングする概念は、どちらの場合も同じです。

以下の画面は、上記のプログラムによって生成された出力を示しています。ユーザーベースの入力システムにinput()関数を使用することもできます(ここでは静的入力を実装しました)

出力

Popped item is 4
Elements in the stack are:
3
2
1

キュー

スタックでは、オブジェクトは次々に格納され、これらのオブジェクトは到着順に削除されます。つまり、FIFOの概念に従います。 FIFOは、キューデータ構造で先入れ先出しタイプの配置に従うことを意味します。

キューでの操作

  • 要素の追加/追加-これにより、追加されたアイテムの数だけキューサイズが増加し、追加は後端、つまりキューの最後で行われます。

  • 要素の削除/削除-これには2つの条件が含まれます-キューが空の場合、削除できる要素がありません。つまり、キューでアンダーフローが発生するか、キューに特定の要素が存在する場合、前面にある要素が削除されます。これにより、削除された要素の数だけスタックのサイズが縮小されます。

  • トラバース/表示-これには、スタックの各要素にアクセスして画面に表示することが含まれます。

ピークの追加機能を挿入することもできます。つまり、キューのバック/エンドで値を取得します。

キューの特徴

  • 挿入順序は保持されます。
  • キューでの重複は許可されています。
  • 同様のデータ型ストレージ。
  • CPUタスク操作の解析に非常に役立ちます。

サンプルコード

#Adding elements to queue at the rear end
def enqueue(data):
   queue.insert(0,data)

#Removing the front element from the queue
def dequeue():
   if len(queue)>0:
      return queue.pop()
   return ("Queue Empty!")

#To display the elements of the queue
def display():
   print("Elements on queue are:");
   for i in range(len(queue)):
      print(queue[i])

# executable code
if __name__=="__main__":
   queue=[]
   enqueue(5)
   enqueue(6)
   enqueue(9)
   enqueue(5)
   enqueue(3)
   print("Popped Element is: "+str(dequeue()))
   display()

上記のコードは、Python3.xのキュー機能を実装しています。またはそれ以前。複数のif-elseステートメントを使用してユーザーに選択肢を提供することにより、メニュー方式のプログラムを作成できます。キューのフレーミングの概念は、どちらの場合も同じです。

以下の画面は、上記のプログラムによって生成された出力を示しています。ユーザーベースの入力システムにinput()関数を使用することもできます(ここでは静的入力を実装しました)

出力

Popped item is: 5
Elements on queue are:
3
5
9
6

結論

この記事では、Python 3.xでStack&Queueデータ構造を実装する方法を学びました。またはそれ以前。同じアルゴリズムを実装して、他のプログラミング言語でスタック/キュー検出プログラムを実装できます。


  1. PythonとScrapyを使用したWebスクレイピング?

    クローラーを開発するための最良のフレームワークの1つは、scrapyです。 Scrapyは、高レベルの機能を利用してWebサイトのスクレイピングを容易にする、人気のあるWebスクレイピングおよびクロールフレームワークです。 インストール Windowsにscrapyをインストールするのは簡単です。pipまたはconda(anacondaがある場合)のいずれかを使用できます。 ScrapyはPython2と3の両方のバージョンで動作します。 pip install Scrapy または conda install –c conda-forge scrapy Scrapyが正しく

  2. MacでのPython3のアップグレードと使用

    あなたはあなたの真新しいMacがすべての関連するソフトウェアの最新バージョンを持っていると思うかもしれません。ほとんどのユーザーアプリにとっては正しいでしょうが、基盤となるフレームワークにとっては別の話です。最新の安定版リリースはPython3.5ですが、新しいMacにはPython2.7.10が付属しています。これがバージョン間の大きなギャップのように思われる場合、それはそうだからです。ただし、新しいバージョンが必ずしも優れているとは限りません。Python3はPython 2と下位互換性がなく、ほとんどの開発者は引き続きPython2を使用しています。 2to3か2to3ではないか?