728x90

(1) Deque(DoubleEndedQueue)란?

  • Deque(DoubleEndedQueue)는 앞,뒤 양방향 모두 데이터 처리가 가능한 자료구조이다.
  • 큐와 스택 기능을 모두 가지고있어 원하는대로 사용하면 된다.
  • Collections 내에 내장되어있어 import collections을 해줘야 사용이 가능하다.
  • 장점
    • Deque는 어느 방향에서나 거의 동일한 O(1) 성능으로 데크의 양쪽에서 스레드 안전, 메모리 효율적인 추가 및 팝을 지원한다.

(2) Deque Class 및 함수

class collections.deque([iterable[, maxlen]])
  • append(x) - 오른쪽에 x값 추가
  • appendleft(x) - 왼쪽에 x값 추가
  • clear() - 전체 요소 제거
  • copy() - deque 복사
  • count(x) - x와 같은 요소 갯수
  • extend(iterable) - 오른쪽에 반복가능한 인수의 요소를 추가
  • extendleft(iterable) - 왼쪽에 반복가능한 인수의 요소를 추가
  • index(x) - x의 위치를 반환
  • insert(i,x) - x를 i에 삽입
  • pop() - 오른쪽 요소를 제거하고 반환
  • popleft() - 왼쪽 요소를 제거하고 반환
  • remove(x) - 값이 x인 첫번째 항목을 제거
  • reverse() - 요소를 뒤집는다
  • rotate(n) - n만큼 요소들을 오른쪽으로 이동(맨오른쪽에있는요소는 맨왼쪽으로 이동)

(3) 사용법

from collections import deque

deque = deque()

deque.append('a')
print(deque)                #deque(['a'])

deque.appendleft('b')
print(deque)                #deque(['b', 'a'])

temp_deque = deque.copy()
print(temp_deque)           #deque(['b', 'a'])

deque.clear()
print(deque)                #deque([])

deque.extend(temp_deque)
print(deque)                #deque(['b', 'a'])

deque.append('c')
print(deque)                #deque(['b', 'a', 'c'])

deque.extendleft(temp_deque)
print(deque)                #deque(['a', 'b', 'b', 'a', 'c'])

print(deque.index('b'))     #1

deque.insert(3,'d')
print(deque)                #deque(['a', 'b', 'b', 'd', 'a', 'c'])

print(deque.pop())          #c
print(deque)                #deque(['a', 'b', 'b', 'd', 'a'])

print(deque.popleft())      #a
print(deque)                #deque(['b', 'b', 'd', 'a'])

deque.remove('d')           #deque(['b', 'b', 'a'])
print(deque)

deque.reverse()             #deque(['a', 'b', 'b'])
print(deque)

deque.rotate(1)             #deque(['b', 'a', 'b'])
print(deque)

참조 - docs.python.org/3/library/collections.html

반응형

+ Recent posts