스택은 데이터 구조 개념이다. 이 문서는 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
[]
파이썬 표준 라이브러리 아무튼 특정 스택 데이터 유형이 제공되지 않습니다. list
개체는 문제가 없습니다. list.append()
및 list.pop()
(인수가없는 후자)을 사용하여 을 스택으로 처리하면됩니다.
감사합니다 .Martijn ... 그 큰 도움이되었습니다. 어떤 사람들은 질문을 낮추었지만 초보자로서 나는 혼란 스러웠고 대답이 매우 도움이된다는 것을 발견했습니다. – payal