본문 바로가기
IT/Python

deque 연습하기

by Jang HyunWoong 2014. 12. 19.

deque는 보통 덱이라고 말한다.

deque는 double-ended-queue 에서 나온 말이다.

deque는 두 끝나는 지점(시작-끝)에서 다이나믹하게 공간이 늘어날 수도 있고 줄어 들수도 있다.

 

deque는 다이나믹한 배열형태라고 생각하면 된다. 조금 특이한 점은 엘리멘트들이 randomly하게 직접적으로 엑세스가 허용이된다.

먼저 queue를 이해하고 본다면 deque를 이해하기 쉬울 것이다. 

 

예를 통해 직접 보겠다. 

 

>>> from collections import deque # deque 사용하기 위한 라이브러리를 더한다. 

>>> d = deque('ghi')                     # g, h, i 세개의 아이템으로 deque를 하나 만든다. 

>>> d                                         # 확인

deque(['g', 'h', 'i'])         

>>> for elem in d:                        # for문사용해서 아이템들을 대문자로 출력

print(elem.upper())

G

H

I

>>> d.append('j')                         # j를 더했다. 

>>> d                                         # deque상태를 확인하니 오른쪽 끝에서 아이템이 들어갔다. 

deque(['g', 'h', 'i', 'j'])

>>> d.appendleft('f')                    # 이번엔 왼쪽에서 아이템을 더한다. 

>>> d                                         # 확인

deque(['f', 'g', 'h', 'i', 'j'])

>>> d.pop()                                # pop을 통해 아이템을 빼낸다. (맨 오른쪽에서 나온다)

'j'

>>> d.popleft()                            # popleft를 통해 왼쪽(처음)에 있는 것을 빼낸다. 

'f'

>>> list(d)                                   # list확인

['g', 'h', 'i']

>>> d[0]                                    # 0번째 는 'g'

'g'

>>> d[-1]                                  # -1번째는 'i'

'i'

>>> list(reversed(d))                     # list를 거꾸로 해서 출력(deque에는 변화 x)

['i', 'h', 'g']

>>> d

deque(['g', 'h', 'i'])

>>> 'h' in d                                 # 'h'값이 deque안에 있는지 확인(Access)

True

>>> d.extend('jkl')                       # j, k, l을 집어 넣어 deque확장

>>> d

deque(['g', 'h', 'i', 'j', 'k', 'l'])

>>> d.rotate(1)                           # 1칸 로테이트

>>> d

deque(['l', 'g', 'h', 'i', 'j', 'k'])

>>> d.rotate(-1)

>>> d

deque(['g', 'h', 'i', 'j', 'k', 'l'])

>>> deque(reversed(d))                # deque전체를 리버스

deque(['l', 'k', 'j', 'i', 'h', 'g'])

>>> d.clear()

>>> d.pop()

Traceback (most recent call last):

  File "<pyshell#60>", line 1, in <module>

    d.pop()

IndexError: pop from an empty deque

>>> d.extendleft('abc')

>>> d

deque(['c', 'b', 'a'])

>>>  

반응형