본문 바로가기

코딩/파이썬 기초

파이썬 튜토리얼 025. 리스트와 자료구조 스택

python : list : 자료구조 스택

리스트와 자료구조 스택

스택(stack)은 임의 데이터에 제한적으로 접근할 수 있는 자료구조의 하나이다.

스택은 한 쪽 끝에서만 접근하여 데이터를 넣거나 뺄 수 있는 자료구조로 LIFO(last in first out)의 구조를 갖는다.

 

출처 : 위키백과

list.append(), list.pop()

리스트 메서드 append와 pop을 사용하면 자료구조 스택을 쉽게 구현할 수 있다.

위의 그림에서 자료구조 스택에 데이터를 넣는 push는 리스트 메서드 append에, 자료구조 스택에서 데이터를 빼는 pop은 리스트 메서드 pop에 각각 대응된다.

 

my_stack = [3, 4, 5]
print(my_stack)

my_stack.append(6)
print(my_stack)

my_stack.append(7)
print(my_stack)

for i in range(len(my_stack)):
    ret = my_stack.pop()
    print(ret, my_stack)

 

자료구조 스택

 

아이템이 없는 빈 리스트에 pop 메서드를 사용하면 IndexError가 발생한다.

 

IndexError 발생

 

따라서 리스트 메서드 pop를 사용할 때 리스트에 아이템이 있는지 없는지를 확인하는 코드가 고려될 수 있다.

아래의 코드 예에서는 if my_stack이 이에 해당된다.

 

my_stack = [3, 4, 5]
print(my_stack)

my_stack.append(6)
print(my_stack)

my_stack.append(7)
print(my_stack)

for i in range(len(my_stack)):
    ret = my_stack.pop()
    print(ret, my_stack)

if my_stack:
    my_stack.pop()
else:
    print('my_stack -> empty')

 

my_stack -> empty