deque

hyyyynjn·2021년 5월 5일
0

python 정리

목록 보기
6/26
post-thumbnail

deque

  • collections 모듈인 deque는 double-ended queue의 줄임말로, 양방향에서 데이터를 처리할 수 있는 queue형 자료구조이다.
  • deque는 list처럼
    • append(), pop() 메소드를 사용할 수 있다
    • element in deque 처럼 원소의 유무를 확인할 수 있다.

deque의 메소드

✋append(x) & appendleft(x)

  • deque.append(x) : list.append(x)와 마찬가지로 x를 deque 오른쪽(끝)에 삽입한다.
  • deque.appendleft(x) : x를 deque 왼쪽(처음)에 삽입한다.
from collections import deque

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

deq = deque(['a', 'b', 'c'])
deq.appendleft('d')
print(deq) # deque(['d', 'a', 'b', 'c'])

✋pop() & popleft()

  • deque.pop() : list.pop()과 마찬가지로 가장 오른쪽(끝)의 원소를 제거하고 값을 반환한다
  • deque.popleft() : 가장 왼쪽(처음)의 원소를 제거하고 값을 반환한다
from collections import deque

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

deq = deque(['a', 'b', 'c'])
print(deq.popleft()) # a
print(deq) # deque(['b', 'c'])

✋remove(x) & clear()

  • deque.remove(x) : 인자로 넣은 데이터를 deque에서 삭제한다
  • deque.clear() : deque안의 모든 맴버를 삭제한다
from collections import deque

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

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

✋rotate(n) & reverse()

  • deque.rotate(n) : 요소들(elements)을 n값 만큼 회전 해주는 메소드
    • n 이 양수이면 👉 가장 오른쪽 데이터를 pop해서 appendleft한다
    • n 이 음수이면 👉 가장 왼쪽 데이터를 pop해서 append한다
  • deque.reverse() : deque안의 모든 데이터를 통째로 뒤집어 버린다
from collections import deque

deq = deque(['a','b','c','d'])
deq.reverse()
print(deq) # deque(['d', 'c', 'b', 'a'])

deq = deque(['a', 'b', 'c', 'd', 'e'])
deq.rotate(1) # deq.rotate()와 같다
print(' '.join(deq)) # e a b c d

deq2 = deque(['a', 'b', 'c', 'd', 'e'])
deq2.rotate(2)
print(' '.join(deq2)) # d e a b c

deq3 = deque(['a', 'b', 'c', 'd', 'e'])
deq3.rotate(-1)
print(' '.join(deq3)) # b c d e a

deq4 = deque(['a', 'b', 'c', 'd', 'e'])
deq4.rotate(-2)
print(' '.join(deq4)) # c d e a b

✋extend(iterable) & extendleft(iterable)

  • deque.extend(iterable) : 기본 deque에 iterable 데이터를 오른쪽(끝)에 합친다
  • deque.extendleft(iterable) : 기본 deque에 iterable 데이터를 왼쪽(처음)에 합친다
from collections import deque

deq = deque(['a','b','c','d'])
sampleData = ['z','k','e','r']

deq.extend(sampleData)
print(deq) # deque(['a', 'b', 'c', 'd', 'z', 'k', 'e', 'r'])

deq = deque(['a','b','c','d'])
deq.extendleft(sampleData)
print(deq) # deque(['r', 'e', 'k', 'z', 'a', 'b', 'c', 'd'])

✅deque -> list

deq = deque(['a','b','c','d'])
print(list(deq)) # [1, 2, 3]

✅deque는 sort가 안된다

  1. 먼저 list에 값을 담고
  2. list.sort() 로 정렬하고
  3. q = deque(list) 로 변환한다

0개의 댓글