deque를 쓸 때 다음과 같이 모듈을 불러온다.
from collections import deque
deque를 from queue import deque로 불러올 수 있는데 하지 말자. 멀티스레딩을 위한 것이기도 하고, 큐가 매우 느리다.
링크: https://www.acmicpc.net/blog/view/70
deque는 다음과 같은 형식을 지닌다.
from collections import deque
dq = deque(iterable, maxlen)
iterable객체에는 string, tuple, list, set, dictionary(key만 읽음)등이 올 수 있다. data type이 어떠하든 iterable object에서 서 요소를 하나씩 불러와 저장하므로 뭘 넣어도 상관없다.
from queue import deque
dq = deque({1,2,3}, 3)
print(dq)
>>> deque([1, 2, 3], maxlen=3)
dq = deque((1,2,3), 3)
print(dq)
>>> deque([1, 2, 3], maxlen=3)
maxlen에는 deque의 길이의 최댓값을 설정할 수 있다.
만약 append(), appendleft()를 통해 maxlen 이상의 값을 추가할 경우, append()을 하게 되면 맨 왼쪽의 원소가 삭제되고 ,appendleft()를 할 경우 맨 오른쪽의 원소가 삭제되고 값이 추가된다. 다음 코드는 deque의 추가, 삭제의 예시이다.
from queue import deque
dq = deque((1,2,3), 3)
print(dq)
>>> deque([1, 2, 3], maxlen=3)
dq.append(4)
print(dq)
>>> deque([2, 3, 4], maxlen=3)
dq.appendleft(5)
print(dq)
>>> deque([5, 2, 3], maxlen=3)
iterable를 초기화하지 않고 maxlen을 iterable 객체로 읽기 때문에 TypeError가 발생한다. maxlen을 쓰고자 할 땐 deque([], maxlen) 등을 통해 반드시 초기화를 진행하고 사용해야 한다.
from queue import deque
dq = deque(3)
>>> TypeError: 'int' object is not iterable
'컴퓨터 > 파이썬 공부정리' 카테고리의 다른 글
[Python] quick_sort 구현 - iterator generator (0) | 2020.11.10 |
---|---|
[phython] e-NFA를 DFA로 만드는 프로그램 (0) | 2020.11.10 |
[Python] from enum import Enum으로 Enum 사용하기 (0) | 2020.09.01 |
[Python] index() 정리 (0) | 2020.09.01 |
[Python] for ~ else, while ~ else를 사용하는 방법 (0) | 2020.08.31 |