2016-07-21 12 views
-2

リストと&のスタックの違いは何ですか?リストとPythonのスタックの違いは?

私はその説明をPythonのドキュメントで読んだことがありますが、その両方が同じであると思われますか?

>>> stack = [3, 4, 5] 
>>> stack.append(6) 
>>> stack.append(7) 
>>> stack 
[3, 4, 5, 6, 7] 
>>> stack.pop() 
7 
>>> stack 
[3, 4, 5, 6] 
>>> stack.pop() 
6 
>>> stack.pop() 
5 
>>> stack 
[3, 4] 

答えて

7

スタックはデータ構造概念です。このドキュメントでは、Python listオブジェクトを使用してオブジェクトを実装しています。そのため、このチュートリアルのセクションの名前はで、リストをスタックとして使用するのはです。

スタックはスタックに追加するだけのもので、スタックからスタックを取り除くと、逆順、先入れ先グ、最後のアウトスタイルでスタックを再配置します。書籍や帽子や... ビール箱のスタックのように:

beer crate stacking

Wikipedia explanationを参照してください。

リストははるかに用途が広いので、リスト内の任意の場所に要素を追加したり削除したりすることができます。一番上の誰かと一緒にビールクレートのスタックでそれを試してみません!

あなたはカスタムクラスでスタックを実現することができます。目の前で

from collections import namedtuple 

class _Entry(namedtuple('_Entry', 'value next')): 
    def _repr_assist(self, postfix): 
     r = repr(self.value) + postfix 
     if self.next is not None: 
      return self.next._repr_assist(', ' + r) 
     return r 

class Stack(object): 
    def __init__(self): 
     self.top = None 
    def push(self, value): 
     self.top = _Entry(value, self.top) 
    def pop(self): 
     if self.top is None: 
      raise ValueError("Can't pop from an empty stack") 
     res, self.top = self.top.value, self.top.next 
     return res 
    def __repr__(self): 
     if self.top is None: return '[]' 
     return '[' + self.top._repr_assist(']') 

はほとんどリスト(やや人為的に)、それは間違いなくスタックです:

>>> stack = Stack() 
>>> stack.push(3) 
>>> stack.push(4) 
>>> stack.push(5) 
>>> stack 
[3, 4, 5] 
>>> stack.pop() 
5 
>>> stack.push(6) 
>>> stack 
[3, 4, 6] 
>>> stack.pop() 
6 
>>> stack.pop() 
4 
>>> stack.pop() 
3 
>>> stack 
[] 

Pythonの標準ライブラリのdoesn特定のスタックデータ型を持って来ない。 listオブジェクトはうまくいきます。 list.append()list.pop()(引数なしの後者)に限定すると、リストとして扱うことができます。

+0

ありがとう@Martijn ...その大きな助け。いくつかの人々が質問を落としているが、私は初心者として混乱し、あなたの答えが非常に有用であることが分かった – payal

1

"スタック"は、listの特定のアプリケーションであり、操作は最後から追加(プッシュ)およびポップ(プル)に制限されます。

0

また、Pythonのリストをスタックとして使用することもできます。通常のリストとスタックの組み合わせのようなリストを考えてみましょう。 これは、here

方法を添加 最後の要素は、(「ラストイン、 ファーストアウト」)検索最初の要素であるスタックとしてリストを使用することは非常に簡単にリストに記載されています。アイテムをスタックの最上部に追加するには、append()を使用します。 に実際にあなたが彼らの正確な例を使用している 明示的なインデックスなし)(ポップを使用し、スタックの最上位から

をアイテムを取得。あなたはそれが "結合されたデータ構造"であるという事実に混乱していますか?

EDIT:別のユーザーが述べたように、これはリストを使用して実装された概念です。

0

StackはLast in Firstのコンセプトで動作します。 スタック内でプッシュ操作とポップ操作を実行することができます スタックリストは、追加、挿入、削除、連結などのすべての操作を実行するのが簡単です... スタックはスタックのアプリケーションであり、もっと。

関連する問題