スタックはデータ構造概念です。このドキュメントでは、Python list
オブジェクトを使用してオブジェクトを実装しています。そのため、このチュートリアルのセクションの名前はで、リストをスタックとして使用するのはです。
スタックはスタックに追加するだけのもので、スタックからスタックを取り除くと、逆順、先入れ先グ、最後のアウトスタイルでスタックを再配置します。書籍や帽子や... ビール箱のスタックのように:
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()
(引数なしの後者)に限定すると、リストをとして扱うことができます。
ありがとう@Martijn ...その大きな助け。いくつかの人々が質問を落としているが、私は初心者として混乱し、あなたの答えが非常に有用であることが分かった – payal