Ein Stapel ist eine Datenstruktur Konzept. Die Dokumentation verwendet ein Python list
Objekt, um eins zu implementieren. Aus diesem Grund trägt dieser Abschnitt des Lernprogramms den Namen Verwenden von Listen als Stapel.
Stacks sind Dinge, denen du Sachen hinzufügst, und wenn du Sachen wieder von einem Stapel wegnimmst, tust du das in umgekehrter Reihenfolge, zuerst im, letzten im Stil. Wie ein Stapel Bücher oder Hüte oder ... Bierkästen:

Siehe Wikipedia explanation.
Listen auf der anderen Seite sind vielseitiger, Sie können Elemente überall in der Liste hinzufügen und entfernen. Du würdest das nicht mit einem Stapel Bierkisten mit jemandem oben versuchen!
Sie könnten einen Stapel mit einer benutzerdefinierten Klasse implementieren:
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(']')
Kaum eine Liste in Sicht (etwas künstlich), aber es ist auf jeden Fall ein Stapel:
>>> 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
[]
Die Python-Standardbibliothek doesn Es gibt keinen bestimmten Stack-Datentyp. Ein list
Objekt ist in Ordnung. Beschränken Sie einfach jede Verwendung auf list.append()
und list.pop()
(letzteres ohne Argumente), um eine Liste als einen Stapel zu behandeln.
Dank @Martijn ... es ist eine große Hilfe. Obwohl einige Leute die Frage herabgesetzt haben, war ich als Anfänger verwirrt und fand Ihre Antwort äußerst hilfreich – payal