본문 바로가기
Programming/- Python

[Python] Deque (데크) 기본 사용법

by 완벽주의탈피 2022. 11. 6.

 

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 등등의 기능은 모두 리스트와 동일하므로 생략한다.

댓글