deque는 double-ended queue를 줄여서 표현한 것이다. deque는 앞과 뒤에서 데이터를 처리할 수 있는 양방향 자료형으로, 스택(stack)처럼 써도 되고 큐(queue)처럼 써도 된다.
즉, 스택과 큐 특성 모두 갖고 있으며, 둘을 조합한 형태의 자료구조로 이해하면 된다.
Method | Explanation |
---|---|
deque.append(item) | 오른쪽 끝에 새로운 원소를 삽입한다. |
deque.appendleft(item) | 왼쪽 끝에 새로운 원소를 삽입한다. |
deque.pop() | 오른쪽 끝의 원소를 제거 후 반환한다. |
deque.popleft() | 왼쪽 끝의 원소를 제거 후 반환한다. |
deque.extend(array) | 주어진 array 배열을 순환하며 오른쪽에 추가한다. |
deque.extend(array) | 주어진 array 배열을 순환하며 왼쪽에 추가한다. |
deque.insert(n, item) | n번 index에 원소를 추가한다. |
deque.remove(item) | 입력한 원소를 삭제한다. 같은 원소가 있을 경우 왼쪽부터 삭제된다. |
deque.rotate(n) | n만큼 원소의 위치를 회전한다. (양수: 시계방향, 음수: 반시계 방향) |
deque.clear() | 모든 원소를 제거한다. |
deque.reverse() | 원소의 위치를 좌우 반전시킨다. |
from collections import deque
# deque 생성
queue = deque()
# 요소 추가
my_deque.append(1)
my_deque.appendleft(2)
my_deque.extend([3, 4, 5])
my_deque.extendleft([6, 7, 8])
# 요소 접근
print(my_deque[0]) # 6
print(my_deque[-1]) # 5
for element in my_deque:
print(element) # 6, 7, 8, 2, 1, 3, 4, 5 (한 줄씩 출력)
# 요소 제거
removed_element = my_deque.pop() # 5 제거
removed_left_element = my_deque.popleft() # 6 제거
# 길이 확인
length = len(my_deque)
print(length) # 6