기본 데이터 구조
- 스택과 큐(Stack & quere with list)
- 튜플과 집합(Tuple & Set)
- 사전(dictionary)
- Collection 모듈
Stack
- 나중에 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조
- Last In First Out(LIFO) - '리포' 구조라고 읽음
- Data의 입력을 Push, 출력을 Pop이라고 함
- List(리스트)를 사용해서 스택 구조를 설계할 수 있음
- 리스트에서는 push를 append()로, pop을 pop()으로 구현
Quere
- 먼저 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조
- First In First Out(FIFO) - '피포' 구조라고 읽음
- Stack과 반대되는 개념
- 파이썬은 리스트를 사용하여 큐 구조를 활용
- put을 append(), get을 pop(0)로 구현함
Tuple
- 값의 변경이 불가능한 리스트
- 선언 시에 []가 아닌 ()으로 사용
- 리스트의 연산, 인덱싱, 슬라이싱 등을 동일하게 사용
- 왜 쓸까? -> 프로그램을 작동하는 동안 변경되지 않는 데이터의 저장, 함수의 반환 값 등 사용자 실수 사전 방지
- 값이 하나인 튜플은 (1, ) 등 콤마를 붙여주어야 함
Set
- 값을 순서없이 저장, 중복 불허하는 자료형
- Set 객체 선언을 이용하여 객체 생성
- 수학에서 활용하는 다양한 집합 연산 가능
- .union (합집합), .intersection (교집합), .difference (차집합)
- | (합집합), & (교집합), - (차집합)
Dict
- 데이터를 저장할 때는 구분 지을 수 있는 값을 함께 저장
- 구분을 위한 데이터 고유값을 Identifier 또는 Key라고 함
- Key 값을 활용하여 데이터 값(Value)를 관리함
- key, value를 매칭하여 key로 value를 검색함
- 다른 언어에서는 Hash Table이라는 용어를 사용함
- {key1:value1, key2:value2, …}
- dict.item() : (key, value) 형태의 튜플로 반환됨
- dict.keys(), dict.values()
Collections Module
- List, Tuple, Dict에 대한 python Built-in 확장 자료 구조(모듈)
- 편의성, 실행 효율 등을 사용자에게 제공함
- deque, Counter, OrderedDict, defaultdict, namedtuple
deque
from collections import deque
- Stack과 Quere를 지원하는 모듈
- List에 비해 효율적인(빠른) 자료 저장 방식을 지원함
- rotate, reverse 등 Linked List의 특성을 지원함
- 기존 list 형태의 함수를 모두 지원함
- .rotate(1) : 맨뒤에 값을 떼서 맨 앞으로 붙여줌
- .appendleft() : 맨 앞에 append 해줌
- .extendleft(list) : list를 통째로 앞에 append해줌
- deque는 기존 list보다 효율적인 자료구조를 제공함
- 효율적인 메모리 구조로 처리 속도 향상
OrderedDict
- Dict와 달리, 데이터를 입력한 순서대로 dict를 반환함
- dict도 python 3.6부터 입력한 순서를 보장하여 출력함
- 지금은 크게 의미가 없음
Defaultdict
- Dict type의 값에 기본 값을 지정, 신규값 생성 시 사용하는 방법
from collections import defaultdict
- 하나의 지문에 각 단어들이 몇 개나 있는지 세고 싶을 경우?
- Text-mining 접근법으로써, Vector Space Model
Counter
- Sequence type의 Data element들의 갯수를 dict 형태로 반환
- Dict type, keyword parameter 등도 모두 처리 가능
- Set의 연산들을 지원함
Namedtuple
- Tuple 형태로, Data 구조체를 저장하는 방법
- 저장되는 data의 variable을 사전에 지정해서 저장함
Reference
'Data Science > Boostcourse_coachingstudy' 카테고리의 다른 글
Python Object Oriented Programming (0) | 2022.01.24 |
---|---|
Pythonic code (0) | 2022.01.24 |
String and advanced function concept (0) | 2022.01.17 |
Conditionals and Loops (0) | 2022.01.14 |
Function and Console I/O (0) | 2022.01.14 |
댓글