์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ๋ค๋ณด๋ฉด ์์ฃผ ์ฌ์ฉํ๋ Collections ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ deque ํด๋์ค์ ๋ํด ์์๋ณด์ !
1. Deque๋?
์๋ฐฉํฅ์์ ํ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ
queue(ํ)๋ FIFO(First in, First out), ์ฆ ๋จผ์ ๋ค์ด๊ฐ ์์๊ฐ ๋จผ์ ๋์ค๋ ์ ์ ์ ์ถ ์๋ฃ๊ตฌ์กฐ์ด๋ค. deque๋ ์๋ฐฉํฅ ํ์ ๊ตฌ์กฐ์ด๊ธฐ์ ์, ๋ค ์์ชฝ ๋ฐฉํฅ์์ element ์ถ๊ฐ/์ ๊ฑฐ๊ฐ ๊ฐ๋ฅํ ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
2. deque์ ๋ฉ์๋(Method)
- append(x)
: deque ์ค๋ฅธ์ชฝ์ x๋ฅผ ์ถ๊ฐ
from collections import deque
d = deque('abc') # deque ์์ฑ
d.append(1)
print(list(d)) # listํ์ผ๋ก ์ถ๋ ฅ
# ['a','b','c',1]
- appendleft()
: deque ์ผ์ชฝ์ x๋ฅผ ์ถ๊ฐ
from collections import deque
d = deque('abc') # deque ์์ฑ
d.appendleft(1)
print(list(d)) # listํ์ผ๋ก ์ถ๋ ฅ
#[1, 'a', 'b', 'c']
- pop()
: ๋ฐํฌ์ ์ค๋ฅธ์ชฝ ๋์ ์๋ ์์๋ฅผ ์ญ์ ํ๊ณ ๋ฐํํ๋ฉฐ ๊ทธ ์ ์ ๋จ์์๋ ์์๊ฐ ์๋ค๋ฉด IndexError ๋ฐ์
from collections import deque
d = deque('abc') # deque ์์ฑ
d.pop()
print(list(d))
# ['a','b']
- popleft()
: ๋ฐํฌ์ ์ผ์ชฝ ๋์ ์๋ ์์๋ฅผ ์ญ์ ํ๊ณ ๋ฐํํ๋ฉฐ ๊ทธ ์ ์ ๋จ์์๋ ์์๊ฐ ์๋ค๋ฉด IndexError ๋ฐ์
from collections import deque
d = deque([1,2,3]) # deque ์์ฑ
d.popleft()
print(list(d))
# [2,3]
- extend()
: iterable argument์ element๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐํฌ์ ์ค๋ฅธ์ชฝ์ ํ์ฅ
from collections import deque
d = deque([1,2,3]) # deque ์์ฑ
d.extend([4,5])
print(list(d))
# [1,2,3,4,5]
append์ extend๊ฐ ํท๊ฐ๋ฆด ์ ์๋ ๋ฐ extend()๋ iterable argument(list, set, string, bytes, dictionary..)์ ์์๋ง ์ถ๊ฐํ ์ ์๋ค.
์ฆ, ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ error๊ฐ ๋ฐ์ํ๋ค.
from collections import deque
d = deque([1,2,3]) # deque ์์ฑ
d.extend(4)
print(list(d))
# TypeError: 'int' object is not iterable
- extendleft()
: iterable argument์ element๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐํฌ์ ์ค๋ฅธ์ชฝ์ ํ์ฅ, ์ด ๋ ์ถ๊ฐํ ์์๋ ์์์ ๊ฐ์ด ๋ฐ๋ ์์๋ก ์ฝ์ ๋๋ค.
from collections import deque
d = deque([1,2,3]) # deque ์์ฑ
d.extendleft([4,5])
print(list(d))
# [5, 4, 1, 2, 3]
- rotate(n)
: n>0์ ๊ฒฝ์ฐ deque์ ์์๋ฅผ n์นธ์ฉ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํจ๋ค. n<0์ ๊ฒฝ์ฐ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์ ๋๊ฐ๋งํผ ์ด๋ํ๋ค.
from collections import deque
d = deque(['a','b','c','d','e']) # deque ์์ฑ
d.rotate(1) # ['e', 'a', 'b', 'c', 'd']
from collections import deque
d = deque(['a','b','c','d','e']) # deque ์์ฑ
d.rotate(2) # ['d', 'e', 'a', 'b', 'c']
from collections import deque
d = deque(['a','b','c','d','e']) # deque ์์ฑ
d.rotate(-1) # ['b', 'c', 'd', 'e', 'a']
3. list์ deque์ ์ฐจ์ด์
๋ฐ์ดํฐ์์ด ๋ง์์๋ก list๋ณด๋ค ์ฐ์ฐ์๋ ๋ฉด์์ ํจ์จ์ ์ธ deque์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค.
โป docs.python.org ์ collections - deque๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.
'๐ฆ Computer Language > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ์ ๊ทํํ์ sub (0) | 2022.01.16 |
---|---|
[Python] ๋ฆฌ์คํธ, 2์ฐจ์ ๋ฐฐ์ด ์ ๋ ฌํ๊ธฐ | sort() (0) | 2021.07.23 |
[Python] list B = A์ B = A[:]์ ์ฐจ์ด (0) | 2021.07.14 |
[Python] itertools: permutations, combinations | ์์ด, ์กฐํฉ (0) | 2021.07.12 |
[Python] 2์ฐจ์ ๋ฐฐ์ด์์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ ๊ตฌํ๊ธฐ (0) | 2021.07.12 |