Stack과 Queue의 기능을 모두 사용하는 Deque 자료형
속도가 빠르기 때문에 자주 활용된다.
Deque (데크) 기본 정의
- 한쪽 끝에서만 자료의 삽입, 삭제가 가능한 queue와는 달리 양방향이 가능한 자료구조
- O(1)의 접근 속도를 가짐
FIFO의 구조를 가진 큐를 확장시킨 개념이다.
즉, 앞과 뒤 모두에서 데이터의 삽입, 삭제가 가능하고 속도도 매우 빠르다.
선언 (init)
- from collections import deque 활용
- deque()로 초기화
# Dequeue (Init)
from collections import deque
mydeque = deque()
비어 있는 자료구조를 선언할 수 있다.
append : 데이터 삽입
- 데크에 데이터 삽입
- deque.append(x)
- deque.appendleft(item)
# Deque (Append)
mydeque = deque([1, 2])
mydeque.append(3)
mydeque.appendleft(0)
mydeque # [0, 1, 2, 3]
우선 기본적으로는 리스트와 사용법이 동일하고, 추가로 왼쪽에도 삽입이 가능하다.
pop : 데이터 삭제
- 데크에서 데이터 삭제하여 반환
- deque.pop(x)
- deque.popleft(x)
# Deque (Pop)
mydeque = deque([1, 2, 3])
mydeque.pop() # 3
mydeque.popleft() # 1
제거와 동시에 맨 끝의 값이 반환되고, 추가로 맨 왼쪽의 값을 반환할 수 있다.
즉, 삽입과 삭제의 기능을 통해 스택과 큐를 동시에 구현할 수 있다.
extend : 확장
- 데크를 양 끝으로 확장
- deque.extend(x)
- deque.extendleft(x)
# Deque (Extend)
mydeque = deque('kr')
mydeque.extend('ap') # ['k', 'r', 'a', 'p']
mydeque.extendleft('hi') # ['i', 'h', 'k', 'r', 'a', 'p']
마찬가지로 양 끝으로 확장이 가능하다.
append와 다른 점은 extend는 iterable한 값을 한번에 삽입할 수 있다는 점이다.
insert : 위치 삽입
- 원하는 위치에 데이터 삽입
- deque.insert(i, x)
# Deque (Insert)
mydeque = deque([1, 2])
mydeque.insert(1, 3)
mydeque # [1, 3, 2]
리스트와 마찬가지로 원하는 위치에 데이터를 삽입한다.
remove : 원하는 데이터 삭제
- 원하는 값 중 가장 처음에 위치하는 데이터 삭제
- 존재하지 않으면 ValueError 발생
- deque.remove(x)
# Deque (Remove)
mydeque = deque([1, 2])
mydeque.remove(1)
mydeque # [2]
rotate : 회전
- 데크를 원하는 만큼 좌, 우로 회전시킨다.
- deque.rotate(i)
# Deque (Rotate)
mydeque = deque([1, 2, 3, 4])
mydeque.rotate(2) # [3, 4, 1, 2]
mydeque.rotate(-1) # [4, 1, 2, 3]
양수면 오른쪽, 음수면 왼쪽으로 원하는 만큼 좌, 우로 회전이 가능하다.
그 외에도 여러 기능이 있지만 clear, count, reverse 등등의 기능은 모두 리스트와 동일하므로 생략한다.
'Programming > - Python' 카테고리의 다른 글
[Python] Queue(큐) 기본 사용법 (0) | 2022.11.03 |
---|---|
[Python] Dictionary (딕셔너리) 정리 (0) | 2022.11.02 |
[Python] Stack (스택) 기본 사용법 (0) | 2022.06.20 |
[Python] Set (집합) : 중복 없는 자료형 (0) | 2022.05.25 |
[Python] 반복문 사용 : range / enumerate (0) | 2022.05.12 |
댓글