๐Deque(Double-Ended Queue)
์๊ณผ ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ์๋ฐฉํฅ ์๋ฃํ
from collections import deque
dq = deque()
dq = deque('hello') # deque(['h', 'e', 'l', 'l', 'o'])- ๋ฌธ์์ด์ ์ด์ฉํด deque๋ฅผ ๋ง๋ค๋ฉด ๊ฐ ๋ฌธ์๋ฅผ ๊ฐ์ผ๋ก ๊ฐ์ง๋ ๋ฆฌ์คํธ ํํ์ deque๊ฐ ๋ง๋ค์ด์ง
- ํ๋ฅผ ๊ตฌํํด์ ์ฌ์ฉํ ๋, ๋ฆฌ์คํธ์ ๋นํด ์๋๊ฐ ๊ต์ฅํ ๋น ๋ฆ
๐ ์ฝ์ ํจ์
๐append(v)/appendleft(v)
๊ฐ์ฅ ๋ค/์์ ๊ฐ์ ์ถ๊ฐํ๋ ํจ์
from collections import deque
dq = deque('hello')
dq.append(v)
dq.appendleft(v)๐insert(idx, v)
ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ ์ถ๊ฐํ๋ ํจ์
from collections import deque
dq = deque('hello')
dq.insert(idx, v)๐extend(iterable)/extendleft(iterable)
iterableํ ๊ฐ์ ํ๋์ฉ deque์ ๊ฐ์ฅ ๋ค/์์ ์ถ๊ฐํ๋ ํจ์
from collections import deque
dq = deque('hello')
dq.extend(vs)
dq.extendleft(vs)- iterable ๊ฐ ์์ฒด๊ฐ ๋ค์ด๊ฐ๋ ๊ฒ์ด ์๋๋ผ iterable ์์ ์์๋ค์ด ๊ฐ๊ฐ์ ๊ฐ์ผ๋ก ๋ค์ด๊ฐ
๐์ญ์ ํจ์
๐pop()/popleft()
๊ฐ์ฅ ๋ค/์์ ์์๋ฅผ ์ญ์ ํ ํ returnํ๋ ํจ์
from collections import deque
dq = deque('hello')
dq.pop() # 'o'
dq.popleft() # 'h'- ํด๋นํ๋ ๊ฐ์ด ์์ผ๋ฉด
idxError๋ฐ์
๐remove(v)
์ ์ผ ์ฒ์ ๋์จ ํด๋น ๊ฐ์ ์ญ์ ํ๋ ํจ์
from collections import deque
dq = deque('hello')
dq.remove('l') # dq(['h', 'e', 'l', 'o'])- ํด๋นํ๋ ๊ฐ์ด ์์ผ๋ฉด
valueError๋ฐ์
๐๊ธฐํ ํจ์
๐reverse()
deque์ ์์๋ฅผ ๋ฐ๋๋ก ๋ค์ง๋ ํจ์
from collections import deque
dq = ('hello')
dq.reverse() # ['o', 'l', 'l', 'e', 'h']- ๋ฆฌํด ๊ฐ ์์
๐rotate(n)
deque๋ฅผ n๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ ์ํค๋ ํจ์
from collections import deque
dq = ('hello')
dq.rotate(3) # ['l', 'l', 'o', 'h', 'e']- n์ด ์์๋ผ๋ฉด ์ผ์ชฝ์ผ๋ก ํ์
- ๋ฆฌํด ๊ฐ ์์
๐clear()
deque์ ์๋ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํ๋ ํจ์
from collections import deque
dq = ('hello')
dq.clear() # deque([])๐์๊ฐ๋ณต์ก๋
| list | deque | |
|---|---|---|
| ๋งจ ์ ์์ ์ถ๊ฐ | list.insert(0, v) O(n) | dq.appendleft() O(1) |
| ๋งจ ์ ์์ ์ญ์ | list.pop(0) O(n) | dq.popleft() O(1) |
| ๋งจ ๋ท ์์ ์ถ๊ฐ | list.append(v) O(1) | dq.append(v) O(1) |
| ๋งจ ๋ท ์์ ์ญ์ | list.pop() O(1) | dq.pop() O(1) |