본문 바로가기
Develop/Python + SWEA

[python] collections 모듈, deque

by Tarra 2022. 1. 23.

python의 deque에 대해서 알아보자.

 

1. deque(데크)

Deque(데크)는 double-ended queue 의 줄임말로, 앞과 뒤 양방향에서 데이터를 처리할 수 있는 queue형 자료구조를 의미한다.

사실 list에서도 모두 가능한 자료구조의 형태인데 , 왜 굳이 deque를 사용하는 것일까?

그것은 바로 deque의 유용한 여러 함수와 빠른 처리속도 때문이다.

 

deque와 list의 사용가능 함수들.

2. deque의 사용법

from collections import deque

a = deque()
print(a)

deque를 사용하기 위해서는 collections의 deque 모듈을 넣어주어야 하며 deque()를 선언함으로써 변수에

deque를 사용할 수 있게 된다.

 

3. deque의 메서드들

deque()
메서드  설명

append(x)

데크의 오른쪽에 x를 추가합니다.

appendleft(x)

데크의 왼쪽에 x를 추가합니다.

clear()

데크에서 모든 요소를 제거하고 길이가 0인 상태로 만듭니다.

copy()

데크의 얕은 복사본을 만듭니다.

count(x)

x 와 같은 데크 요소의 수를 셉니다.

extend(iterable)

iterable 인자에서 온 요소를 추가하여 데크의 오른쪽을 확장합니다.

extendleft(iterable)

iterable에서 온 요소를 추가하여 데크의 왼쪽을 확장합니다. 일련의 왼쪽 추가는 iterable 인자에 있는 요소의 순서를 뒤집는 결과를 줍니다.

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

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

insert(i, x)

x를 데크의 i 위치에 삽입합니다.
삽입으로 인해 제한된 길이의 데크가 maxlen 이상으로 커지면, IndexError가 발생합니다.
버전 3.5에 추가.

pop()

데크의 오른쪽에서 요소를 제거하고 반환합니다. 요소가 없으면, IndexError를 발생시킵니다.

popleft()

데크의 왼쪽에서 요소를 제거하고 반환합니다. 요소가 없으면, IndexError를 발생시킵니다.

remove(value)

value의 첫 번째 항목을 제거합니다. 찾을 수 없으면, ValueError를 발생시킵니다.

reverse()

데크의 요소들을 제자리에서 순서를 뒤집고 None을 반환합니다.

rotate(n=1)

데크를 n 단계 오른쪽으로 회전합니다. n이 음수이면, 왼쪽으로 회전합니다.
데크가 비어 있지 않으면, 오른쪽으로 한 단계 회전하는 것은 d.appendleft(d.pop())과 동등하고, 왼쪽으로 한 단계 회전하는 것은 d.append(d.popleft())와 동등합니다.
데크 객체는 하나의 읽기 전용 어트리뷰트도 제공합니다:

maxlen

데크의 최대 크기 또는 제한이 없으면 None.

 

 

 

4. 결론

 

풀어가는 백준등의 문제가 점점 어려워질수록 여러 모듈이나 메서드가 필요해지는 것 같다.

확실히 여러 메소드들을 알아야 시간관리나 알고리즘을 짜는 데 있어 더 유용한 듯하다.

잊지 말고 최소한 이러한 것들이 있다는 것 정도는 기억해둘 것!

 


참고자료

 

collections — 컨테이너 데이터형 — Python 3.10.2 문서

collections — 컨테이너 데이터형 소스 코드: Lib/collections/__init__.py 이 모듈은 파이썬의 범용 내장 컨테이너 dict, list, set 및 tuple에 대한 대안을 제공하는 특수 컨테이너 데이터형을 구현합니다. named

docs.python.org