---
# System prepended metadata

title: Data Structures

---

# Data Structures

Motivation
---
- Python의 Data Structure은 내부적으로 어떤 자료구조로 되어있을까? 그리고 알고리즘 문제를 해결할 때, 이런 자료구조의 특성을 어떻게 고려할 수 있을까?


기본 자료구조 (Python 3.7 기준)
---
- List
    - 기본적으로 동적 리스트로 구성되어 있다. 예를 들어, a 라는 배열을 선언했으면 append 를 통해서 element 를 추가할 수 있다. 
    - 새로운 추가가 안되는 정적 리스트를 사용하고 싶은 경우엔 어떻게 할까?
- Tuple
    - Read Only List이다. 즉, append, delete, update 등의 작업은 Tuple에서 발생하지 않는다.
- Dict
    - key-value 형태로 저장
    - 내부 자료구조는 xxx 를 사용
    - 3.7 이전에는 삽입된 순서대로 정렬되지 않은 형태로 저장했지만, 3.7부터는 정렬된 Dict 형태로 제공하고 있다. 3.7 이전 버전에서 정렬된 Dict 를 사용하고 싶다면 OrderedDict 를 사용하면 된다. 그렇다고 해서 OrderedDict를 사용할 일이 없다는 것은 아니다. OrderedDict 는 엄격한 동등성 비교를 하기 때문에, 데이터와 키 값이 다른 순서로 입력된 경우에는 다른 Dict 로 간주하도록 되어 있다. 
- Set:
    - 정렬되지 않은 형태로 저장. 정렬된 set 을 사용하고 싶다면 ordered set 은 따로 지원하지 않는다고 함. 다른 방법은 없을까?
- 

응용 자료구조 (collections)
---
```python=
from collections import *

# OrderedDict 추가 
from collections import OrderedDict

```

