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
반응형