# deque
deque는 stack과 queue자료구조를 지원하는 모듈입니다.
삽입과 삭제에 연산에 있어 list는 O(N)의 시간복잡도를 가졌다면, deque는 O(1)의 시간복잡도를 가지기 때문에 deque를 사용하는 것이 list를 사용하는 것보다 효율적입니다
deque( [ iterable [ , maxlen ] ] )
iterable의 데이터로 deque객체를 생성할 수 있습니다. iterable을 지정하지 않으면 deque는 비어 있습니다.
또한, maxlen 최대 길이가 지정되면 지정된 최대길이로 제한됩니다. (지정되지않거나 None이면 deque의 길이는 계속해서 커질 수 있습니다.) 만약 꽉찬 deque에 데이터가 들어오면 , 새로운 데이터는 추가되고 반대쪽 끝의 기존데이터가 삭제됩니다.
# deque의 메서드
deque를 호출하는 방법은 다음과 같습니다.
from collections import deque
[ append(x) ]
deque의 오른쪽에 x를 추가합니다.
[ appendleft(x) ]
deque의 왼쪽에 x를 추가합니다.
[ clear() ]
deque의 모든 요소를 삭제하고 길이가 0인 상태로 만듭니다
[ copy() ]
deque의 복사본을 만듭니다.
[ count(x) ]
x와 같은 요소의 수를 셉니다.
[ extend(iterable) ]
iterable을 deque의 오른쪽에 붙여 확장합니다.
[ extendleft(iterable) ]
iterable을 deque의 왼쪽에 붙여 확장합니다. ( 왼쪽 추가는 iterable 요소의 순서를 뒤집음 )
[ index(x[,start[,stop]]) ]
deque에 있는 x의 위치 반환합니다.
[ insert(idx, x) ]
deque의 idx위치에 x를 삽입합니다. (삽입으로 인해 maxlen이 초과가 되면 IndexError)
[ pop() ]
deque의 오른쪽에서 요소를 제거하고 반환합니다. (deque가 비어있으면 IndexError)
[ popleft() ]
deque의 dhls쪽에서 요소를 제거하고 반환합니다. (deque가 비어있으면 IndexError)
[ remove(value) ]
value와 일치하는 첫번째 요소를 제거합니다. ( 찾을 수 없으면 ValueError)
[ reverse() ]
deque의 순서를 뒤집고 None 반환합니다.
[ rotate(n=1) ]
n이 양수이면 오른쪽 끝 요소가 왼쪽 끝에 붙습니다(n번 동작, default=1)
n이 음수이면, 왼쪽 끝 요소가 오른쪽 끝에 붙습니다( |n|번 동작)