deque에 대해 알아보자

이말감·2022년 6월 18일
0

백준 배열 돌리기1 문제가 복잡해보여 회피하다가 (^^) 오늘 풀었다. (풀이과정)
푸는 과정에서 값을 array에 넣고 회전 수만큼 첫 번째 원소를 빼고 새로 append 하려 했으나, dequerotate가 있다는 것을 알게되었다.
rotate에 대해 공부하면서 deque에 어떤 메소드들이 있는지 한 번 확인해보자.

deque

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

  • deque는 파이썬 모듈 collections의 객체이다.
  • double-ended queue 약자이며, 스택과 큐를 일반화한 것이다.
  • deque는 양쪽 끝에서 추가(append)와 팝(pop)을 O(1) 성능으로 지원한다.
  • list 객체도 유사한 연산을 지원하지만, pop(0), insert(0, v) 연산에 대해 O(n) 메모리 이동 비용이 발생한다.

deque의 메서드

추가/삭제

append(x)

  • deque의 오른쪽에 x를 추가한다.

appendleft(x)

  • deque의 왼쪽에 x를 추가한다.

extend(iterable)

  • iterable 인자에서 온 요소를 추가하여 deque의 오른쪽을 확장한다.

extendleft(iterable)

  • iterable에서 온 요소를 추가하여 deque의 왼쪽을 확장한다.
  • 왼쪽 추가는 iterable 인자에 있는 요소의 순서를 뒤집는 결과를 준다.

insert(i, x)

  • x를 deque의 i 위치에 삽입산다.
  • 삽입으로 인해 제한된 길이의 데크가 maxlen 이상으로 커지면, IndexError 발생

pop()

  • deque의 오른쪽에서 요소를 제거하고 반환한다.
  • 요소가 없으면, IndexError를 발생시킨다.

popleft()

  • deque의 왼쪽에서 요소를 제거하고 반환한다.
  • 요소가 없으면, IndexError를 발생시킨다.

remove(value)

  • value의 첫 번째 항목을 제거한다.
  • 찾을 수 없을 경우, ValueError를 발생시킨다.

clear()

  • deque에서 모든 요소를 제거하고 길이가 0인 상태로 만든다.

그 외

copy()

  • deque의 얕은 복사본을 만든다.

count(x)

  • x와 같은 데크 요소의 수를 센다.

index(x[, start[, stop]])

  • 데크에 있는 x의 위치를 반환한다. (인덱스 start 또는 그 이후, 그리고 인덱스 stop 이전)
  • 첫 번째 일치를 반환하거나, 찾을 수 없으면 valueError를 발생시킨다.

reverse()

  • deque의 요소들을 제자리에서 순서를 뒤집고 None을 반환한다.

rotate(n=1)

  • deque를 n단계 오른쪽으로 회전한다. n이 음수이면, 왼쪽으로 회전한다.
  • deque가 비어 있지 않을 때, 오른쪽으로 한 단계 회전하는 것은 appendleft(d.pop())과 동등하고, 왼쪽으로 한 단계 회전하는 것은 append(d.popleft())와 동등하다.

maxlen

  • deque의 최대 크기 또는 제한이 없으면 None

참고

profile
전 척척학사지만 말하는 감자에요

0개의 댓글