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 반환 | ||
참조
- 파이썬 위키
- 파이썬 공식 문서
반응형
'Languages > Python' 카테고리의 다른 글
| [파이썬 101] all과 any (0) | 2022.06.03 |
|---|---|
| [파이썬 101] List, Set, Dictionary 연산과 메서드의 시간복잡도 (0) | 2022.06.03 |
| [파이썬 라이브러리] functools 모듈의 reduce 메서드 (0) | 2022.06.03 |
| [파이썬 101] lambda (람다) (0) | 2022.06.03 |
| [파이썬 101] map 함수 (Iterator, Iterable) (0) | 2022.06.03 |