반응형
deque(데크)란?
deque는 앞과 뒤에서 데이터를 처리할 수 있는 양방향 자료형이다.
양방향이기 때문에 스택(Stack)처럼 써도 되고 큐(Queue)처럼 써도 된다.
collections.deque 모듈은 deque 자료형을 생성하는 모듈이다.
from collections import deque deq = deque()
리스트(list)와 비슷한 데크(deque)
- 데크(deque)의 사용법은 리스트(list)와 거의 흡사하다. collections.deque의 메소드들 중 리스트(list)와 차이를 보이는 메소드 위주로 살펴보겠다.
데크(deque)에 요소추가 : append(item)
list.append(item)과 마찬가지로 item을 dequeue의 오른쪽(마지막)에 추가해준다.
deq = deque(['a', 'b', 'c']) deq.append('d') print(deq) # print 결과값 => deque(['a', 'b', 'c', 'd'])
데크(deque) 왼쪽에 요소추가 : appendleft(item)
데크(deque)는 양방향에서 데이터를 처리할 수 있다. appendleft(item)은 왼쪽, 즉 앞쪽에서 item을 추가해주는 메소드이다.
deq = deque(['a', 'b', 'c']) deq.appendleft('d') print(deq) # print 결과값 => deque(['d', 'a', 'b', 'c'])
주어진 배열을 순환하며 데크(deque)에 요소추가 : extend(iterable)
list.extend(iterable)과 마찬가지로 iterable argument(list, str, tuple...)의 요소를 하나씩 반환하여 오른쪽(마지막)에 추가해준다.
interable argument : arguments의 각 요소를 하나씩 반환 가능한 object를 의미한다.
deq = deque(['a', 'b', 'c']) deq.extend('d') print(deq) # print 결과값 => deque(['a', 'b', 'c', 'd'])
append vs extend
lst2 = ['a', 'b', 'c', 'd'] lst2.append('ef') # append() lst.extend('ef') # extend() print("lst.extend('ef') >> ", lst) print("lst2.append('ef') >>", lst2) # print 결과값 => lst.extend('ef') >> ['a', 'b', 'c', 'd', 'e', 'f'] lst2.append('ef') >> ['a', 'b', 'c', 'd', 'ef']
주어진 배열을 순환하며 데크(deque) 왼쪽에 요소추가 : extendleft(iterable)
extendleft(iterable)는 appendleft(item)와 마찬가지로 왼쪽(앞쪽)에서 데이터를 추가해주준다.
deq = deque(['a', 'b', 'c']) deq.extendleft('de') print(deq) # print 결과값 => deque(['e', 'd', 'a', 'b', 'c']
데크(deque)의 요소삭제 : pop()
list.pop() 과 같이 오른쪽(마지막) 요소를 가져오는 동시에 데크(deque)에서 삭제한다.
deq = deque(['a', 'b', 'c']) deq.pop() >>> 'c'
데크(deque) 왼쪽에서 요소삭제 : popleft()
왼쪽(앞쪽) 요소를 가져오는 동시에 데크(deque)에서 삭제한다.
deq = deque(['a', 'b', 'c']) deq.popleft() >>> 'a'
데크(deque)의 요소 회전 : rotate(n)
rotate(n)은 요소들을 n값 만큼 회전해주는 메소드이다.
n의 값이 음수(negative)이면 왼쪽으로, 양수(positive)이면 오른쪽으로 회전한다.
deq = deque(['a', 'b', 'c', 'd', 'e']) deq.rotate(1) print(deq) # print 결과값 => deque(['e', 'a', 'b', 'c', 'd']) deq.rotate(-1) print(deq) # print 결과값 => deque(['a', 'b', 'c', 'd', 'e'])
참조
반응형
'Programming > Python' 카테고리의 다른 글
[Python] input()과 sys.stdin.readline()의 차이 (0) | 2021.08.17 |
---|---|
[Python] Heapq 모듈 사용하기 (0) | 2021.08.17 |