단원 홈
3단원 · 6차시

표로 생각하기
다차원 데이터 구조

영화관 좌석 "D열 7번", 시간표의 "화요일 3교시", 사진의 픽셀 한 점 — 세상의 많은 데이터는 줄이 아니라 입니다. 리스트 속에 리스트를 담아 표를 코드로 옮겨 봅시다.

성취기준 12정03-06
2차원 리스트행과 열[행][열] 인덱싱 이미지 = 숫자 표
🎯 학습 목표
  • 2차원 리스트의 구조를 이해하고 [행][열] 인덱스로 원하는 값에 접근할 수 있다.
  • 실제 데이터(시간표·성적표·이미지)를 다차원 구조로 표현하는 이유를 설명할 수 있다.
  • 다차원 데이터 구조를 활용한 프로그램을 작성할 수 있다.
🤔

생각 열기 — "D열 7번 자리로 오세요"

행과 열로 정렬된 극장의 좌석들
극장의 좌석 — 모든 자리는 행 번호와 열 번호, 두 개의 값으로 정확히 지목된다. 출처: Wikimedia Commons
격자 위에 흑돌과 백돌이 놓인 바둑판
바둑판 — 가로줄과 세로줄의 교차점, 그 자체가 거대한 2차원 구조다. 출처: Wikimedia Commons

영화표에 적힌 "D열 7번" — 행과 열, 두 개의 좌표만 있으면 수백 석 중 내 자리가 정확히 정해지죠. (재미있게도 극장에서 말하는 'D열'은 가로줄, 즉 이 차시 용어로는 에 해당해요!) 바둑기사들도 "화점, 3의 三" 같은 말로 361개 교차점 중 하나를 콕 집어냅니다. 지금까지 배운 리스트는 한 줄(1차원)이었는데, 좌석표·시간표·바둑판 같은 표 모양 데이터는 어떻게 담아야 할까요? 답은 의외로 단순합니다 — 리스트 안에 리스트를 담으면 됩니다!

1

2차원 리스트 — 리스트의 리스트

[행][열] 두 개의 인덱스로 표를 정복

2차원 리스트는 리스트의 원소가 다시 리스트인 구조예요. 바깥 번호가 행(가로줄), 안쪽 번호가 열(세로칸)을 가리킵니다.

timetable = [ ["수학", "정보", "체육"], ["영어", "과학", "음악"], ["국어", "정보", "미술"], ] ← timetable[0] (0행: 월요일) ← timetable[1] (1행: 화요일) ← timetable[2] (2행: 수요일) timetable[1][2] = "음악" → 1행(화요일)의 2열(3교시): 행 먼저, 열 나중! ※ 인덱스는 0부터 — [1][2]는 '두 번째 줄의 세 번째 칸'

2차원 리스트의 구조 — 바깥 인덱스는 행, 안쪽 인덱스는 열

💡 표를 훑는 공식 — 반복 속의 반복

마지막 부분의 이중 반복문을 눈여겨보세요. 바깥 반복이 행(줄)을, 안쪽 반복이 그 줄의 열(칸)을 차례로 방문합니다 — 책을 읽을 때 줄을 따라가며 글자를 읽는 것과 똑같죠. 이 패턴은 다음 차시(제어 구조)에서 본격적으로 다듬습니다. 예고편인 셈!

2

실전 — 성적표를 행과 열로 분석하기

같은 표도 가로로 읽으면 학생, 세로로 읽으면 과목

2차원 데이터의 진짜 매력은 두 방향으로 읽을 수 있다는 거예요. 성적표를 가로(행)로 읽으면 "한 학생의 전 과목", 세로(열)로 읽으면 "한 과목의 전체 학생"이 됩니다. 같은 데이터, 다른 질문!

🛠️ 활동 1 — 표 분석 미션
  1. 미션 ①: 자신의 점수 행을 추가하고(이름도!), 평균이 잘 계산되는지 확인하세요.
  2. 미션 ②: '정보' 과목 최고 점수를 받은 학생의 이름을 출력하는 코드를 추가하세요. (힌트: 2열만 모은 리스트를 만들고 max()index() — 4차시 복습!)
  3. 미션 ③ (토론): 이 성적표를 1차원 리스트 9칸으로 담으면 어떤 점이 불편해질까요? "행과 열"이라는 구조가 사라지면 잃는 것을 짝과 이야기해 보세요.
3

모든 이미지는 숫자의 표다

그림을 그리면 코드가 된다 — 직접 확인!

2단원 픽셀 압축 실험실에서 그림을 그렸던 것, 기억하나요? 그때의 그림이 사실 2차원 리스트였습니다. 모든 디지털 이미지는 픽셀 값의 표 — 흑백이면 0과 1(또는 밝기 0~255), 컬러면 빨강·초록·파랑 세 장의 표가 겹친 것이죠. 아래에서 그림을 그리면 진짜 파이썬 코드가 생성됩니다!

🎨 픽셀 아트 → 파이썬 코드 변환기 INTERACTIVE

12×12 캔버스에 그림을 그리면(클릭·드래그) 오른쪽에 2차원 리스트 코드가 실시간 생성됩니다. 완성되면 [실행기로 보내기] — 여러분의 그림이 파이썬 데이터가 되어 처리됩니다!


          
📸 알고 있나요? — 포토샵 필터의 정체

방금 여러분이 한 일(픽셀 표를 읽고 → 규칙대로 바꿔서 → 새 표를 만들기)이 바로 이미지 처리의 전부예요. 흑백 필터는 RGB 세 표의 평균을 내는 것, 밝기 조절은 모든 칸에 같은 수를 더하는 것, 모자이크는 칸들을 뭉개는 것. 인스타그램 필터도, 의료 영상 분석도, 자율주행차의 차선 인식도 — 모두 2차원(3차원) 리스트 연산입니다. 여러분은 오늘 그 세계의 첫 코드를 작성했어요!

확인 문제

바로바로 채점! 해설까지 꼭 읽어 보세요.

📝

6차시 확인 문제

4문항 · 즉시 채점

1data = [[1,2,3],[4,5,6]]일 때 data[1][2]의 값은?

2영화관 좌석(10행 × 12열)의 예매 여부를 저장하기에 가장 알맞은 구조는?

3성적표 2차원 리스트에서 '수학(1열)' 과목의 전체 평균을 구하려면?

4디지털 이미지와 다차원 데이터의 관계로 옳은 것은?

🚀

더 알아보기

교육과정 너머, 궁금한 만큼 깊이!

심화3차원, 4차원… 차원은 계속된다 — 컬러 이미지와 동영상

흑백 이미지가 2차원이라면, 컬러 이미지는 3차원이에요 — 각 픽셀이 [빨강, 초록, 파랑] 세 값을 가지니 image[행][열][색]처럼 인덱스가 세 개! 그럼 동영상은? 컬러 이미지가 시간 순서로 쌓인 것이니 video[프레임][행][열][색]4차원입니다.

위 코드의 2×2 이미지로 채널을 직접 꺼 보세요 — 컬러 이미지가 R·G·B 세 장의 표가 겹친 것임이 한눈에 보입니다.

세 채널 모두 켜짐 — 원본 그대로!
미래AI의 언어, 텐서 — 다차원 배열이 지능을 만든다

인공지능 뉴스에서 '텐서(tensor)'라는 말을 들어 봤나요? 구글의 AI 라이브러리 이름도 텐서플로(TensorFlow)죠. 텐서는 사실 오늘 배운 다차원 배열의 수학 이름이에요 — 1차원이면 벡터, 2차원이면 행렬이라고 따로 부르기도 하는데, 차원과 상관없이 이들을 모두 아우르는 이름이 텐서!

AI가 고양이 사진을 알아보는 과정은 "3차원 텐서(사진)가 들어와 → 수많은 행렬 곱셈을 거쳐 → '고양이일 확률 0.97'이 나오는" 다차원 배열의 대행진입니다. GPU가 AI 시대의 보석이 된 이유도 행렬 계산을 수천 개씩 동시에 해내는 장치라서예요. 4단원(인공지능)에서 이 이야기를 다시 만납니다!

0차원 7 스칼라 숫자 하나 1차원 벡터 = 리스트 소리 샘플, 점수 목록 2차원 행렬 = 2차원 리스트 흑백 사진, 오목판 3차원… R G B 텐서 (셋을 아우르는 이름) 컬러 사진 = 표 3장이 한 묶음

차원이 늘 때마다 인덱스가 하나씩 — 동영상은 video[프레임][행][열][색], 4차원 텐서!

연계5차시 + 6차시 합체 — CSV 파일을 2차원 리스트로

5차시의 파일입출력과 오늘의 2차원 리스트가 만나면, 진짜 데이터 분석 코드가 완성됩니다.

공공데이터 CSV도 똑같은 패턴으로 읽힙니다 — 2단원 수집 → 5차시 읽기 → 6차시 표 분석. 파이프라인 완성!

놀이게임 맵도 2차원 리스트 — 오목판을 만들어 보자

바둑·오목·테트리스·지뢰찾기 — 이런 게임들의 판은 예외 없이 2차원 리스트입니다. 0=빈칸, 1=흑돌, 2=백돌로 약속하면 오목판이 완성돼요.

📌

한눈에 정리

  • 2차원 리스트 = 리스트의 리스트 — 표 모양 데이터를 담는 표준 구조
  • 접근은 [행][열] 순서, 인덱스는 0부터 — timetable[1][2] = 1행 2열
  • 표는 두 방향으로 읽는다 — 행(한 학생의 전 과목) vs 열(한 과목의 전체 학생)
  • 표 전체를 훑는 공식 = 이중 반복문 (7차시에서 본격 연마!)
  • 이미지·게임 맵·CSV — 세상의 수많은 데이터가 다차원 구조다 (컬러 이미지는 3차원, AI의 텐서로 이어진다)