보통 큐는 선입선출 방식으로 작동한다. 반면 양방향 큐가 있는데 그게 바로 데크이다.
앞, 뒤 양쪽 방향에서 엘리먼트를 추가하거나 제거할 수 있다.
양끈 엘리먼트의 append와 pop이 압도적으로 빠르다.
컨테이너의 양끝 엘리먼트에 접근하여 삽입 또는 제거를 할 경우 일반적인 리스트가 이러한 연산에 O(n)이 소요되는데 데크는 O(1)로 접근 가능하다.
from collections import deque
deq = deque()
deq.appendleft(10)
deq.append(0)
deq.popleft()
deq.pop()
데크(deque)에 존재하는 메서드(method)는 대략 다음과 같다.
deque.append(item)
: item을 데크의 오른쪽 끝에 삽입한다.deque.appendleft(item)
: item을 데크의 왼쪽 끝에 삽입한다.deque.pop()
: 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.deque.popleft()
: 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.deque.extend(array)
: 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가한다.deque.extendleft(array)
: 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가한다.deque.remove(item)
: item을 데크에서 찾아 삭제한다.deque.rotate(num)
: 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽).