본문 바로가기
알고리즘/python

[python] deque(데크) 사용법

by goldory 2021. 1. 17.
728x90
반응형

오늘 소개할 모듈은 collection 모듈의 deque이다.

deque는 스택과 큐의 기능을 모두 가지고 있다.

그럼 deque를 만들고, 어떤 메서드들이 존재하는지 알아보자.

 

deque 만들기

from collections import deque
dq = deque("python")

#deque(['p', 'y', 't', 'h', 'o', 'n'])

 

deque - stack (append(), pop())

dq.append('d')
# deque(['p', 'y', 't', 'h', 'o', 'n', 'd'])

dq.pop()
# 'd'
# deque(['p', 'y', 't', 'h', 'o', 'n'])

stack의 특성에 맞게 가장 오른쪽에 추가되고, 가장 오른쪽에 있는 요소가 제거된다.

pop(index) 형태는 deque에서 작동하지 않는다.

 

deque - queue ( appendleft( ), pop( ), append( ), popleft( ) )

dq.appendleft('a')
#deque(['a', 'p', 'y', 't', 'h', 'o', 'n'])

dq.popleft()
#'a'
#deque(['p', 'y', 't', 'h', 'o', 'n'])

stack은 한쪽 방향에서만 append/pop이 되지만, queue는 양방향에서 가능하다.

따라서 deque에는 appendleft( )와 popleft( ) 같은 함수들로 왼쪽에서도 append와 pop을 가능하게 한다.

 

이 외의 기능

  • deque 확장 (extend, extendleft)
ex = list('good')
# ex = ['g', 'o', 'o', 'd']

dq.extend(ex)
# deque(['p', 'y', 't', 'h', 'o', 'n', 'g', 'o', 'o', 'd'])

dq.extendleft(ex)
# deque(['d', 'o', 'o', 'g', 'p', 'y', 't', 'h', 'o', 'n', 'g', 'o', 'o', 'd'])

- extend( list ) : 오른쪽에 주어진 리스트 붙이기

- extendleft( list ) : 왼쪽에 주어진 리스트 붙이기, 주어진 리스트는 앞쪽부터 붙기 때문에 거꾸로 들어감

 

  • deque 제거 (remove, clear)
dq.remove('d')
# deque(['o', 'o', 'g', 'p', 'y', 't', 'h', 'o', 'n', 'g', 'o', 'o', 'd'])

dq.remove('o')
# deque(['o', 'g', 'p', 'y', 't', 'h', 'o', 'n', 'g', 'o', 'o', 'd'])

dq.clear()
# deque([])

- reomove( string ) : 제일 처음 나온 해당 string이 제거됨

- clear ( ) : deque 전체 삭제

 

  • deque 위치 바꾸기 (reverse, rotate)
dq = deque('apple')
dq.reverse()
# deque(['e', 'l', 'p', 'p', 'a'])

dq.rotate()
# deque(['a', 'e', 'l', 'p', 'p'])

dq.rotate(-1)
# deque(['e', 'l', 'p', 'p', 'a'])

dq.rotate(2)
# deque(['p', 'a', 'e', 'l', 'p'])

- reverse( ) : 말 그대로 뒤집기, 역순으로 바꾸기

- rotate( ) : 제일 오른쪽에 있는 요소를 맨 왼쪽으로 가져오기 (한칸씩 오른쪽으로 밀림)

  ( rotate(-1)은 왼쪽으로 밀림, roate(n)은 n이 양수일 때 그 수만큼 오른쪽으로 밀림 )

728x90
반응형