일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Outlook
- Excel
- python3
- 파이썬3
- 비주얼베이직
- pyqt5
- Windows11
- Android
- html
- windows
- 파이썬GUI
- VBA
- 파워포인트
- python
- 깃
- 문자열
- office
- 윈도우11
- pandas
- 안드로이드
- pythongui
- git
- win32com
- 엑셀
- matlab
- 파이썬
- 오피스
- Windows10
- 윈도우10
- 아웃룩
Appia의 IT세상
파이썬[Python] deque - collections 모듈 본문
이번 포스팅에서는 collection 모듈에서 deque에 대해서 이야기 해보고자 합니다. deque는 기본적으로 리스트의 방식이 매우 동일합니다. 기존의 큐의 양방향성을 확보한 상태라고 보시면 조금 더 수월할 것이라고 생각이 듭니다. 그럼 생성부터 간단히 한번 살펴보도록 하겠습니다. 그렇지만 모든 데이터의 방향의 기본은 오른쪽입니다. 추가적으로 왼쪽에서 데이터를 뺴고 입력하는 부분에 대해서는 별도의 함수를 제공합니다.
deque 생성
기본적인 deque생성시에 다음과 같은 형태로 생성이 됩니다.
collections.deque([iterable[, maxlen]])
그럼 간단한 예시를 보면서 조금 더 살펴보겠습니다.
example)
import collections basedata = ['a','b','c','d'] dequedata = collections.deque(basedata) dequedata1 = collections.deque([1,2,3,4]) print(dequedata) print(dequedata1) | cs |
result)
deque(['a', 'b', 'c', 'd']) deque([1, 2, 3, 4]) | cs |
위와 같이 리스트등과 같이 iterable 기반의 데이터를 인자로 받아서 deque 생성이 가능합니다.
Deque 생성시 사이즈 고정하기
위에서 deque 생성시에 다음과 같이 maxlen을 인자로 추가할 수 있습니다. 이럴 경우 deque의 사이즈가 고정이 됩니다. 그럼 다음을 살펴보겠습니다.
example)
import collections basedata = ['a','b','c','d'] dequedata = collections.deque(basedata,maxlen=3) print(dequedata) | cs |
result)
deque(['b', 'c', 'd'], maxlen=3) | cs |
maxlen을 지정하면 뒤에서부터 데이터가 숫차적으로 데이터 저장되고, deque가 꽉 차면, 추가 입력데이터는 폐기 됩니다.
데이터 추가 / append, appendleft
리스트의 명령어와 같이 append를 이용해서 데이터를 하나씩 추가할 수 있습니다. appendleft의 경우 왼쪽에서 데이터를 추가할 수 있습니다.
example)
import collections basedata = ['a','b','c','d'] sampleData = ['z','k','e','r'] dequedata = collections.deque(basedata) print("append example") dequedata.append('e') print(dequedata) dequedata.appendleft('z') print(dequedata) | cs |
result)
append example deque(['a', 'b', 'c', 'd', 'e']) deque(['z', 'a', 'b', 'c', 'd', 'e']) | cs |
데이터 추가(확장)/ extend, extendleft
기본 deque에 iterable데이터를 합치는 명령어입니다. 기본적으로 오른쪽 방향으로 합치고, extendleft의 경우은 왼쪽에 데이터를 붙입니다.
example)
import collections basedata = ['a','b','c','d'] sampleData = ['z','k','e','r'] print("extend example") dequedata.extend(sampleData) print(dequedata) dequedata = collections.deque(basedata) # deque 새로 생성 dequedata.extendleft(sampleData) print(dequedata) | cs |
result)
extend example deque(['a', 'b', 'c', 'd', 'z', 'k', 'e', 'r']) deque(['r', 'e', 'k', 'z', 'a', 'b', 'c', 'd']) | cs |
데이터 반환 / Pop, Popleft
pop의 경우는 데이터를 하나씩 반환하고, 기존 큐에서 삭제하는 명령어입니다. popleft의 경우는 왼쪽 방향에서 데이터를 반환하고 삭제하는 명령어입니다.
example)
import collections basedata = ['a','b','c','d'] dequedata = collections.deque(basedata) print("pop/popleft example") dequedata.pop() print(dequedata) dequedata.popleft() print(dequedata) | cs |
result)
pop/popleft example deque(['a', 'b', 'c']) deque(['b', 'c']) | cs |
데이터 삭제/remove, clear
remove의 경우 인자로 넣은 데이터를 deque에서 삭제하는 명령어입니다. clear의 경우는 deque안의 모든 맴버를 삭제합니다.
example)
import collections basedata = ['a','b','c','d'] dequedata = collections.deque(basedata) print("remove, clear example") dequedata.remove('a') print(dequedata) dequedata.clear() print(dequedata) | cs |
result)
remove, clear example deque(['b', 'c', 'd']) deque([]) | cs |
데이터 값 위치 바꾸기/reverse, rotate
reverse의 경우 데이터를 뒤집어 버립니다. 그냥 데이터를 통째로 뒤집어 버립니다. 그리고 rotate 명령어는 가장 오른쪽 데이터를 pop해서 appendleft합니다. 이런식으로 데이터를 하나씩 순회하게 합니다. 만약 인자로 들어간 숫만큼 회전을 하게 됩니다.
example)
import collections basedata = ['a','b','c','d'] dequedata = collections.deque(basedata) print("reverse, rotate example") dequedata.reverse() print(dequedata) dequedata.rotate() print(dequedata) dequedata.rotate(2) print(dequedata) | cs |
result)
reverse, rotate example deque(['d', 'c', 'b', 'a']) deque(['a', 'd', 'c', 'b']) deque(['c', 'b', 'a', 'd']) | cs |
오늘은 collection모듈의 deque에 대해서 살펴봤습니다. 물론, 구지 deque가 아니더라더 이중 연결리스트등을 활용하는 것도 매우 괜찮습니다. 이중 연결리스트는 다음 링크를 참조하시길 바랍니다.
파이썬[Python] 038 Double Linked list(이중 연결 리스트)
혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다.
'Python > Python 기본' 카테고리의 다른 글
파이썬[Python] Pycharm (파이참)에서 모듈(Module) 설치하기 (1) | 2020.04.16 |
---|---|
파이썬[Python] 개발환경(IDE) Pycharm (파이참)설치하기 (0) | 2020.04.14 |
파이썬[Python] namedtuple - collections 모듈 (0) | 2020.04.02 |
파이썬[Python] PyAutogui 설치, 사용법(매크로/Macro 제작에 사용됨) (0) | 2020.03.23 |
파이썬[Python] Counter 함수 - collections 모듈 / 알파벳 사용빈도 확인 (0) | 2020.03.12 |