[python collections] deque

한라봉·2023년 4월 10일

Python 문법

목록 보기
15/15

https://docs.python.org/3/library/collections.html#deque-objects

collections library에 deque라는 object가 있다.
list와 비슷한 메소드를 가지고 있다.
deque를 사용하려면 iterable한 자료형을 deque object로 먼저 변경해야된다.

class collections.deque([iterable[, maxlen]])

iterable과 maxlen 모두 optional하다.
iterable한 자료형을 deque object로 만들 경우 iterable에 값을 넣는다.
아무 인자가 없을 경우에는 비어있는 deque object로 만든다.
maxlen는 deque object의 최대 길이를 설정한다.
maxlen이 설정되지 않을 경우, 또는 None일 경우에는 최대 길이 없이 늘어날 수 있다.

>>> from collections import deque
>>> l = [1, 2, 3]
>>> l_deque = deque(l)
>>> l_deque
	deque([1, 2, 3])

collections만 import할 경우엔 이렇게 사용.

>>> import collections
>>> l = [1, 2, 3]
>>> l_deque = collections.deque(l)

appendleft

appendleft(value)

value를 deque의 왼쪽에 append한다.

>>> l_deque.appendleft(4)
>>> l_deque
	deque([4, 1, 2, 3])

extendleft

extendleft(iterable)

iterable한 자료형을 넣으면 그 자료형을 왼쪽에 이어붙인다.
iterable한 자료형의 첫 번째 값부터 왼쪽으로 이어붙이므로 순서는 반대가 된다.

>>> l = deque([1, 2, 3])
>>> x = [9, 0, 5]
>>> l.extendleft(x)
>>> l
	deque([5, 0, 9, 1, 2, 3])

pop

pop()

list의 pop과 다르게 전달되는 인자가 없다.
list에서는 default로 맨 마지막 index가 pop되고, 인자가 전달될 경우 해당 index를 pop했다.
deque에서는 마지막 index가 pop된다.
마찬가지로 pop된 인자는 반환되면서 없어진다.

>>> l = deque([1, 2, 3])
>>> l.pop()
	3
>>> l
	deque([1, 2])

popleft

popleft()

전달되는 인자 없이, 맨 첫 번째 index를 pop한다.

>>> l = deque([1, 2, 3])
>>> l.popleft()
	1
>>> l
	deque([2, 3])

rotate

rotate(n=1)

n이 양수일 경우에는 n번 right shift 한다.
n이 음수일 경우에는 |n|번 left shift 한다.
n의 기본값은 1이다.

>>> l = deque([1, 2, 3])
>>> l.rotate()
>>> l
	deque([3, 1, 2])
>>> l.rotate(-1)
>>> l
	deque([1, 2, 3])

l.rotate(1)l.appendleft(l.pop())과 같다.
l.rotate(-1)l.append(l.popleft())와 같다.

maxlen

maxlen

deque object의 maxlen를 반환한다.
maxlen가 정의되지 않았을 경우 None을 반환한다.

profile
개발자가 되고 싶은 한라봉

0개의 댓글