본문 바로가기

프로그래밍 언어/Python 공부

Python 자료구조 공부 - List(Stack, Queue)

반응형

참고 자료는 여기 입니다.

 

리스트 자료 형은 여러가지 메소드를 갖고 있습니다.

이 리스트를 Stack, Queue 로 사용하는 방법에 대해서 알려드리겠습니다.

 

리스트를 스택으로 사용하기 

리스트 메서드들은 리스트를 스택으로 사용하기 쉽게 만드는데, 마지막에 넣은 요소가 마지막에 나오는 LIFO 원리입니다.

스택의 꼭대기에 항목을 넣으려면 append() 를 사용하고, 스택의 꼭대기에서 값을 꺼낼 때는 pop()을 사용하면 됩니다.

 

stack = [3, 4, 5]
stack.append(6)
stack.append(7)

 

다음과 같이 입력 후, stack 을 출력하면 [3, 4, 5, 6, 7]이 나옵니다. 이후에, stack.pop() 이용시 맨 마지막에 있는 '7' 이 출력됩니다.

 

리스트를 큐로 사용하기

처음으로 넣은 요소가 처음으로 꺼내지는 요소입니다. 하지만, 리스트는 이 목적에는 효율적이지 않습니다. 리스트의 끝에 덧붙이거나, 끝에서 꺼내는 것은 빠르지만 리스트의 머리에 덧붙이거나 머리에서 꺼내는 것은 느립니다(다른 요소들을 한 칸 씩 모두 이동시켜야 하기 때문에)

 

따라서, 큐를 구현하려면 양 끝에서 덧붙이기와 꺼내기가 모두 빠르도록 설계된 collection.deque를 사용하는게 좋습니다.

from collections import deque
queue = deque(["Eric", "John", "Michael"])
queue.append("Terry")
queue.popleft()
queue.append("Graham")
queue.popleft()

다음과 같은 코드가 있다고 합시다. 3번째 줄 실행 결과, Terry는 Michael 뒤에 붙습니다.

이후에 첫번째 popleft() 에는 'Eric' 두번째 popleft()에는 'John'이 출력됩니다. popleft() 메소드는 왼쪽에서(index=0)에서 꺼낸다라고 직관적으로 이해하면 더 쉽습니다 :)

 

* 참고 queue에서 pop을 하지 않고 참조하는 방법은 위의 코드에서 queue[0] 을 사용하면 가능합니다.

 

반응형

'프로그래밍 언어 > Python 공부' 카테고리의 다른 글

defaultdict  (0) 2019.09.02
Python 정렬하기 - list  (0) 2019.08.29
Python 자료형 공부 - dictionary  (0) 2019.08.19
Python 자료형 공부 2 - array  (0) 2019.08.19
Python 입력값 저장하기  (0) 2019.08.14