python의 deque에 대해서 알아보자.
1. deque(데크)
Deque(데크)는 double-ended queue 의 줄임말로, 앞과 뒤 양방향에서 데이터를 처리할 수 있는 queue형 자료구조를 의미한다.
사실 list에서도 모두 가능한 자료구조의 형태인데 , 왜 굳이 deque를 사용하는 것일까?
그것은 바로 deque의 유용한 여러 함수와 빠른 처리속도 때문이다.
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
'Develop > Python + SWEA' 카테고리의 다른 글
[SW Expert Academy] 1206. [S/W 문제해결 기본] 1일차 - View (0) | 2022.02.10 |
---|---|
[백준] 17626번: Four Squares (python) (0) | 2022.02.05 |
[SW Expert Academy] 6223. 객체지향 4 (0) | 2022.01.06 |
[SW Expert Academy] 6208. 객체지향 2 (0) | 2022.01.06 |
[SW Expert Academy] 6203. 객체지향 1 (0) | 2022.01.06 |