내가 몰라 정리한 Python deque

Python DeQue

최근 파이썬 알고리즘을 공부하면서 deque을 사용하게 되었는데, 이에 사용되는 함수가 궁금하여 알아보았다.
일단 list 대신 사용하는 이유는 deque가 List보다 속도가 빠르기 때문이다. list는 O(n)의 속도이고, deque는 O(1)의 속도로 제일 빠르다.

queue Method

queue의 메소드는 아래와 같다.

매서드 설명 List 메소드 일치 여부
q.append(item) 오른쪽 끝에 삽입 O(List에도 존재)
q.appendleft(item) 왼쪽 끝에 삽입 X
q.pop() 가장 오른쪽 요소 반환 및 삭제 O
q.popleft() 가장 왼쪽 요소 반환 및 삭제 X
q.extend(array) 주어진 array을 순환하며 q의 오른쪽에 추가 O
q.extendleft(array) 주어진 array을 순환하며 q의 왼쪽에 추가 X
q.remove(item) 해당 item q를 찾아 삭제 O
q.rotate(숫자) 해당 숫자만큼 회전 (양수 : 시계방향, 음수 : 반시계방향) X
from collections import deque

q = deque([1,2,3])
print('%-25s' % 'original q =', q)

q.append(4)
print('%-25s' %'after append(4) = ',q)
q.appendleft(0)
print('%-25s' %'after appendleft(0) =',q,'\n')

q.pop()
print('%-25s' %'after pop() =',q)
q.popleft()
print('%-25s' %'after popleft() =',q,'\n')

arr1 = [10,11,12]
q.extend(arr1)
print('%-25s' %'after extend(arr) =',q)

arr2 = [-2,-1,0]
q.extendleft(arr2)
print('%-25s' %'after extendleft(arr2) =',q,'\n')

q.remove(-2)
q.remove(-1)
print('%-25s' %'after remove -1,-2 =', q)

q.rotate(1)
print('%-25s' % 'after rotate(1) =', q)
q.rotate(2)
print('%-25s' % 'after rotate(2) =', q)
q.rotate(-3)
print('%-25s' % 'after rotate(-4) =', q)

결과

original q =              deque([1, 2, 3])
after append(4) =         deque([1, 2, 3, 4])
after appendleft(0) =     deque([0, 1, 2, 3, 4]) 

after pop() =             deque([0, 1, 2, 3])
after popleft() =         deque([1, 2, 3]) 

after extend(arr) =       deque([1, 2, 3, 10, 11, 12])
after extendleft(arr2) =  deque([0, -1, -2, 1, 2, 3, 10, 11, 12]) 

after remove -1,-2 =      deque([0, 1, 2, 3, 10, 11, 12])
after rotate(1) =         deque([12, 0, 1, 2, 3, 10, 11])
after rotate(2) =         deque([10, 11, 12, 0, 1, 2, 3])
after rotate(-4) =        deque([0, 1, 2, 3, 10, 11, 12])

Categories:

Updated:

Comments