본문 바로가기

Languages/Python

[파이썬 라이브러리] Collections 모듈의 deque (데크, 덱, 디큐, 데큐)

728x90

 

 

 

deque

from collections import deque

myList = [1, 2, 3, 4, 5]
myDict = {'one': 1, 'two': 2, 'three': 3}

myDeque = deque()
print(type(myDeque))
print(myDeque)

print(deque(myList))
print(deque(myDict))
print(deque(myDict.values()))

 

 - deque([iterable[, maxlen]])

 - iterable을 넣어주지 않으면 빈 큐를 반환

 - 데크, 덱, 디큐, 데큐 등으로 불림

 - deque = double-ended-queue = 양방향 큐

 - 양쪽 끝에서 append와 pop 등을 O(1) 성능으로 지원 (list의 경우 pop(0)이나 insert(0, v) 연산에 대해 O(n) 성능)

 - maxlen을 넘어갈 경우 새 항목이 추가된 반대쪽 끝에서 항목이 삭제됨

 

 

 

메서드

메서드 파라미터 시간 복잡도  설명
append x O(1) deque의 오른쪽(마지막)에 x를 추가
appendleft x O(1) deque의 왼쪽(처음)에 x를 추가
clear - O(1) 모든 요소 제거 (길이 0)
copy - O(N) 얕은 복사
count x O(1) 요소의 수 반환
extend iterable O(k) iterable의 인자를 오른쪽(마지막)에 추가
extendleft iterable O(k) iterable의 인자를 왼쪽(처음)에 추가
index x[, start[, stop]] ? start와 stop 사이에서 x의 위치를 반환 (없으면 ValueError)
insert i, x O(N)  : 추측 i번째 위치에 x를 삽입 (maxlen 초과시 IndexError)
pop   O(1) 오른쪽 (마지막) 요소를 제거하고 반환 (없으면 IndexError)
popleft   O(1) 왼쪽 (첫) 요소를 제거하고 반환 (없으면 IndexError)
remove value O(N) value의 첫번째 항목을 제거. (없으면 ValueError)
reverse   O(N) : 추측 순서를 뒤집고 None을 반환
rotate n=1 O(k) 오른쪽으로 n 단계 rotate (음수면 왼쪽)
maxlen   O(1) : 추측 최대 크기 반환. 제한이 없으면없으면 None 반환

 

 

 

참조
 - 파이썬 위키
 - 파이썬 공식 문서
반응형