7. (Python) Data Structure

2023. 11. 7. 15:35NAVER AI Tech/Python & AI math

1. 스택, 큐

2. 튜플, 집합

3. dictionary

4. collection 모듈

 

stack : Last In First Out 구조. 쌓기.

- append, pop으로 동작

queue : First In Frist Out 구조. 선입선출

- append, pop(0)으로 동작

- 이때 from collections import deque로 구현해서 쓰는게 빠르다.

 

tuple : 값의 변경이 불가능한 리스트

- 왜 쓰냐? 변경하면 안되는 데이터를 저장할 때 사용. 예를 들면 주민번호 같은것들.

- 사용사 실수에 의한 에러를 사전에 방지.

set : 집합.(데이터 내의 원소 중복을 방지)

- add, remove로 동작. 

- 여러 원소 추가,제거는 update(), discard()로 동작.

- s1.union(s2), s1.intersection(s2), s1.difference(s2) 등 합집합, 교집합, 차집합 기능 있음

 

dictionary : key:value로 저장하는 구조

- dictionary.keys(), dictionary.values(), dictionary.items() 로 key, value, (key,value) 값들을 가져올 수 있음.

 

collections : deque, defaultdict, Counter, namedtuple

1. from collections import deque

- dq.append(), dq.appendleft(), dq.pop(), dq.popleft() 으로 동작.

- linked list구조라서 dq.rotate(number)으로 회전이 됨.

2. defaultdict : dictionary에 key값이 없을 때 error가 아니라 default 값을 지정하는 것.

- d = defaultdict(10)

- d['name'] ->error가 아닌 10 반환

3. Counter : input 객체에 대해 원소 별 몇개가 있는지 자동으로 반환해줌.

- c = Counter(['b', 's', 's', 'b'])

- print(c) -> {'b':2, 'c':2} 이렇게 set 형태로 반환.

- set은 덧셈, 뺄셈, 교집합등 연산이 가능하니까 이런것도 지원함. 

4. namedtupe : 약간 함수처럼 객채, 인자 이름을 저장해주는 것

- point = namedtuple('Point', ['x', 'y'])

- Point라는 객체 선언, 이름은 'Point' 인자는 'x', 'y'

- p = Point(x=11, y=22)

- print(p.x, p.y) 가능