들어가기 전에
C++에서의 Queue
Python에서의 Queue
•
deque
from collections import deque
q = deque()
Python
복사
collections 모듈의 deqeue은 double-ended queue의 약자로, 데이터를 양방향에서 추가하고 제거할 수 있습니다. 따라서 deque을 잘 이용하면 stack과 queue 둘 모두로 구현이 가능합니다.
Deque을 Queue로 사용하기
•
FIFO (First In First Out) 구조.
push → append()
pop → popleft()
>>> from collections import deque
>>> q = deque()
>>> q.append(3)
>>> q.append(4)
>>> print(q)
deque([3, 4])
>>> q.popleft()
3
Python
복사
append를 통해 q에 값을 넣고, popleft를 통해 q에서 값을 뽑아냅니다.
또는
push → appendleft()
pop → pop()
>>> from collections import deque
>>> q = deque()
>>> q.appendleft(3)
>>> q.appendleft(4)
>>> print(q)
deque([4, 3])
>>> q.pop()
3
Python
복사
appendleft를 통해 q에 값을 넣고, pop을 통해 q에서 값을 뽑아냅니다.
Queue에 list와 tuple 형태로 넣기
→ list
>>> q.append([1,2,3])
>>> q.append([4])
>>> print(q)
deque([[1, 2, 3], [4]])
>>> q.popleft()
[1, 2, 3]
>>> q.popleft()
[4]
Python
복사
q에 list 형태로 값을 넣으면, list 형태 그대로 나오게 됩니다.
→ tuple
>>> q.append((1,2,3))
>>> q.append((4,))
>>> print(q)
deque([(1, 2, 3), (4,)])
>>> q.popleft()
(1, 2, 3)
>>> q.popleft()
(4,)
Python
복사
tuple도 마찬가지로 tuple형태 그대로 나오게 됩니다.
•
tuple의 값을 pop 하면서 원하는 변수에 바로 저장하기
>>> q.append((1,2,3))
>>> x,y,z = q.popleft()
>>> print(x, y, z)
1 2 3
Python
복사
위와 같은 작업도 가능하게 됩니다.