본문 바로가기

파이썬 Phyton

[파이썬 코딩] collections모듈 _ deque (데크) _ appendleft, rotate, reversed, extend, maxlen

collections 모듈이란?

- 기존의 자료구조(리스트, 큐, 스택, 튜플, 딕셔너리)에서 좀 더 확장하여 제작된 파이썬 내장 모듈

- deque(데크, double-ended queue) 모듈은 스택과 큐를 모두 지원하는 모듈

                                                                        + 양방향으로 데이터를 입출력 할 수 있는 자료구조

 

from collections import deque

#1. 아무요소 없는 deque 생성
deque_list = deque()
print(deque_list)

#2. deque 에 숫자 넣어주기 (기존리스트와 동일)
for i in range(5):
   deque_list.append(i)
print(deque_list)

-- 결과값

#1. deque([])
#2. deque([0, 1, 2, 3, 4])

 

 

-  deque 요소 삭제 시 pop(0)지원안됨

- deque_list.pop() : 우측부터 삭제

# deque에 있는 요소들 삭제
# deque 에서는 pop(0)지원안됨(왼쪽부터 삭제)
# 우측부터 삭제(LIFO)
print(deque_list.pop())

-- 결과값 

4

 

- deque_list.clear() : 리스트값 전부삭제

- appendleft : 왼쪽부터 값 삽입

# appendleft()메소드 사용
deque_list.clear()
print(deque_list)
for i in range(5):
   deque_list.appendleft(i)
   print(deque_list)

-- 결과값 

deque([])
deque([0])
deque([1, 0])
deque([2, 1, 0])
deque([3, 2, 1, 0])
deque([4, 3, 2, 1, 0])

print(deque_list.pop())

-- 결과값 (FIFO)

0

 

- deque 모듈은 원형 연결리스트 (Linked List)의 특성을 지원

- 연결 리스트는 데이터를 저장할 때, 요소의 값을 한 쪽으로 연결한 후, 요소의 다음값의 주소값을 저장하여 연결하는 기법

- rotate :  요소들을 n 만큼 회전 해주는 메소드

- 단, 양수이면 시계방향(오른쪽) 회전 / 음수이면 반시계방향(왼쪽)으로 이동

print(deque_list)
# rotate 1
deque_list.rotate(1)
print(deque_list)
# rotate -1
deque_list.rotate(-1)
print(deque_list)

-- rotate 결과값

deque([4, 3, 2, 1, 0])     
deque([0, 4, 3, 2, 1])    
deque([4, 3, 2, 1, 0])     

print(deque(reversed(deque_list)))

-- reversed 결과값

deque([0, 1, 2, 3, 4])

 

 

- extend() : 리스트를 우측에 붙인다

- extendleft() : 리스트를 좌측에 붙임

print(deque_list)

deque_list.extend([5,6,7])
print(deque_list)

deque_list.extendleft([8,9,10])
print(deque_list)

-- 결과값

deque([4, 3, 2, 1, 0])
deque([4, 3, 2, 1, 0, 5, 6, 7])
deque([10, 9, 8, 4, 3, 2, 1, 0, 5, 6, 7])

 

- maxlen 매개변수 : deque 사이즈를 고정시켜 이전값 삭제

deque_list.clear()
basedata = ['a','b','c','d','e']
deque_list = deque(basedata,maxlen=3)
print(deque_list)

-- 결과값

deque(['c', 'd', 'e'], maxlen=3)

 

deque_list.popleft()
print(deque_list)

-- 결과값 (popleft 왼쪽부터 삭제)

deque(['d', 'e'], maxlen=3)

 

 

지금까지 collection 모듈의 deque모듈에 대해 알아보았습니다