02. 자료구조 (데이터 정리 정돈)
"데이터가 많아지면 서랍이 필요합니다. 용도에 맞는 서랍을 골라 쓰는 법을 배웁니다."
데이터를 변수 하나하나(a=1, b=2...)에 담는 건 한계가 있습니다.
파이썬에는 데이터를 효율적으로 담는 4가지 바구니가 있습니다.
1. 리스트 (List) - 순서가 있는 기차
가장 많이 쓰이는 자료구조입니다. 순서대로 줄을 세워 저장합니다.
대괄호 []를 사용합니다.
- 특징: 순서가 있음 (인덱스), 수정 가능, 중복 허용
- 비유: 기차 (0호차, 1호차...), 할 일 목록
graph LR
subgraph List["리스트 (List)"]
direction LR
I0[index 0] --- V0["파이썬 공부"]
I1[index 1] --- V1["운동하기"]
I2[index 2] --- V2["책 읽기"]
end
style I0 fill:#eee,stroke:#333
style I1 fill:#eee,stroke:#333
style I2 fill:#eee,stroke:#333
todo_list = ["파이썬 공부", "운동하기", "책 읽기"]
# ⚠️ 주의: 컴퓨터는 숫자를 0부터 셉니다!
print(todo_list[0]) # 파이썬 공부 (첫 번째)
print(todo_list[-1]) # 책 읽기 (뒤에서 첫 번째)
리스트 필수 기술 (Toolbox)
append(값): 맨 뒤에 추가 (줄 서기)insert(번호, 값): 중간에 끼워넣기 (새치기)pop(): 맨 뒤의 값을 꺼내고 지우기 (손님 등장)remove(값): 특정 값을 찾아 지우기 (불량품 제거)len(리스트): 리스트의 길이(개수) 재기
2. 딕셔너리 (Dictionary) - 이름표가 달린 서랍
순서보다는 "이름(Key)으로 값(Value)을 찾는 것"이 중요할 때 씁니다.
중괄호 {}를 사용합니다.
- 특징: Key-Value 쌍, Key는 중복 불가, 검색이 매우 빠름
- 비유: 주소록, 사전 (단어: 뜻), JSON 데이터
graph LR
subgraph Dict["딕셔너리 (Dictionary)"]
direction LR
K1((name)) --> V1["Ideabong"]
K2((age)) --> V2["20"]
K3((is_admin)) --> V3["True"]
end
style K1 fill:#e1f5fe,stroke:#01579b
style K2 fill:#e1f5fe,stroke:#01579b
style K3 fill:#e1f5fe,stroke:#01579b
없는 키를 찾으면 에러나요!
user["email"] 처럼 없는 키를 찾으면 프로그램이 멈춥니다(KeyError).
안전하게 찾으려면 .get()을 쓰세요.
AI와 협업 포인트: JSON
AI에게 데이터를 달라고 하거나 웹사이트와 통신할 때 JSON이라는 형식을 씁니다. 이 JSON이 파이썬에서는 딕셔너리(Dictionary)와 똑같이 생겼습니다. 즉, 딕셔너리를 잘 다루면 AI와 대화하기 쉬워집니다.
3. 튜플 (Tuple) & 세트 (Set)
튜플 (Tuple)
리스트와 똑같은데 절대 내용을 바꿀 수 없습니다. (Read-only)
소괄호 ()를 사용합니다.
- 용도: 변하면 안 되는 설정값, 좌표(x, y) 등.
세트 (Set)
중복을 허용하지 않는 주머니입니다. 순서가 없습니다.
- 용도: "참석자 명단에서 중복 제거해줘" 같은 작업.
한 눈에 보는 괄호 세계관
파이썬에서 괄호만 잘 구분해도 에러의 절반이 줄어듭니다.
| 기호 | 이름 | 핵심 이미지 | 한 단어 요약 |
|---|---|---|---|
[] |
대괄호 | 칸이 나뉘어진 정리함 | 선택 (Pick) |
{} |
중괄호 | 내용물이 담긴 보따리 | 내용 (Content) |
() |
소괄호 | 둥글게 감싸는 동작 | 실행 (Action) |