콘텐츠로 이동

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 = {
    "name": "봉이",
    "age": 20,
    "is_admin": True
}
print(user["name"])  # 봉이

없는 키를 찾으면 에러나요!

user["email"] 처럼 없는 키를 찾으면 프로그램이 멈춥니다(KeyError). 안전하게 찾으려면 .get()을 쓰세요.

print(user.get("email"))  # 없으면 None(없음)을 반환하고 안 멈춤

AI와 협업 포인트: JSON

AI에게 데이터를 달라고 하거나 웹사이트와 통신할 때 JSON이라는 형식을 씁니다. 이 JSON이 파이썬에서는 딕셔너리(Dictionary)와 똑같이 생겼습니다. 즉, 딕셔너리를 잘 다루면 AI와 대화하기 쉬워집니다.

3. 튜플 (Tuple) & 세트 (Set)

튜플 (Tuple)

리스트와 똑같은데 절대 내용을 바꿀 수 없습니다. (Read-only) 소괄호 ()를 사용합니다.

  • 용도: 변하면 안 되는 설정값, 좌표(x, y) 등.
settings = (1920, 1080)
# settings[0] = 1000  <-- 에러 발생! 수정 불가

세트 (Set)

중복을 허용하지 않는 주머니입니다. 순서가 없습니다.

  • 용도: "참석자 명단에서 중복 제거해줘" 같은 작업.
numbers = [1, 1, 2, 3, 3]
unique_numbers = set(numbers)  # {1, 2, 3} 중복이 사라짐

한 눈에 보는 괄호 세계관

파이썬에서 괄호만 잘 구분해도 에러의 절반이 줄어듭니다.

기호 이름 핵심 이미지 한 단어 요약
[] 대괄호 칸이 나뉘어진 정리함 선택 (Pick)
{} 중괄호 내용물이 담긴 보따리 내용 (Content)
() 소괄호 둥글게 감싸는 동작 실행 (Action)