stack은 항목들이 쌓여 있는 구조를 뜻하며, LIFO(Last-In, First-Out) 원칙을 따른다. 이 말은, 가장 마지막에 스택에 추가된 항목이 가장 먼저 제거된다는 뜻
**큐는 FIFO, 스택은 LIFO를 쓰는것이 차이가 있다

# 스택 생성
stack = []
# 스택에 요소 추가 (push 연산)
stack.append('apple')
stack.append('banana')
stack.append('cherry')
print(stack) # 출력: ['apple', 'banana', 'cherry']
# 스택에서 요소 제거 (pop 연산)
item = stack.pop()
print(item) # 출력: 'cherry'
print(stack) # 출력: ['apple', 'banana']
이 예제에서는, 'cherry'가 스택에 마지막에 추가되었으므로 'cherry'가 먼저 제거된다. 이러한 행동은 스택의 LIFO(Last In, First Out) 원칙을 따르는 것이다.
위와 같은 방식으로 파이썬의 기본 데이터 타입을 활용해 스택을 간단하게 구현하고 활용할 수 있다. 이 외에도 파이썬 표준 라이브러리의 collections.deque나 queue.LifoQueue 등을 이용하여 스택을 구현할 수도 있다.
stack_list = list()
def push(data):
stack_list.append(data)
def pop():
data = stack_list[-1]
del stack_list[-1]
return data
for index in range(10):
push(index) #0번부터 9번까지 데이터가 들어간다.
pop() #9가 출력된다.
파이썬에선 queue 모듈에서 큐(Queue)나 스택(LifoQueue), 우선순위 큐(Priority Queue) 등을 클래스로 제공해준다. 따라서 이 모듈의 LifoQueue를 사용하면 손쉽게 스택을 사용할 수 있다.
import queue
s = queue.LifoQueue(maxsize = 20)