- 2차원 리스트의 구조를 이해하고 [행][열] 인덱스로 원하는 값에 접근할 수 있다.
- 실제 데이터(시간표·성적표·이미지)를 다차원 구조로 표현하는 이유를 설명할 수 있다.
- 다차원 데이터 구조를 활용한 프로그램을 작성할 수 있다.
생각 열기 — "D열 7번 자리로 오세요"
영화표에 적힌 "D열 7번" — 행과 열, 두 개의 좌표만 있으면 수백 석 중 내 자리가 정확히 정해지죠. (재미있게도 극장에서 말하는 'D열'은 가로줄, 즉 이 차시 용어로는 행에 해당해요!) 바둑기사들도 "화점, 3의 三" 같은 말로 361개 교차점 중 하나를 콕 집어냅니다. 지금까지 배운 리스트는 한 줄(1차원)이었는데, 좌석표·시간표·바둑판 같은 표 모양 데이터는 어떻게 담아야 할까요? 답은 의외로 단순합니다 — 리스트 안에 리스트를 담으면 됩니다!
2차원 리스트 — 리스트의 리스트
[행][열] 두 개의 인덱스로 표를 정복
2차원 리스트는 리스트의 원소가 다시 리스트인 구조예요. 바깥 번호가 행(가로줄), 안쪽 번호가 열(세로칸)을 가리킵니다.
2차원 리스트의 구조 — 바깥 인덱스는 행, 안쪽 인덱스는 열
마지막 부분의 이중 반복문을 눈여겨보세요. 바깥 반복이 행(줄)을, 안쪽 반복이 그 줄의 열(칸)을 차례로 방문합니다 — 책을 읽을 때 줄을 따라가며 글자를 읽는 것과 똑같죠. 이 패턴은 다음 차시(제어 구조)에서 본격적으로 다듬습니다. 예고편인 셈!
실전 — 성적표를 행과 열로 분석하기
같은 표도 가로로 읽으면 학생, 세로로 읽으면 과목
2차원 데이터의 진짜 매력은 두 방향으로 읽을 수 있다는 거예요. 성적표를 가로(행)로 읽으면 "한 학생의 전 과목", 세로(열)로 읽으면 "한 과목의 전체 학생"이 됩니다. 같은 데이터, 다른 질문!
- 미션 ①: 자신의 점수 행을 추가하고(이름도!), 평균이 잘 계산되는지 확인하세요.
- 미션 ②: '정보' 과목 최고 점수를 받은 학생의 이름을 출력하는 코드를 추가하세요. (힌트: 2열만 모은 리스트를 만들고
max()와index()— 4차시 복습!) - 미션 ③ (토론): 이 성적표를 1차원 리스트 9칸으로 담으면 어떤 점이 불편해질까요? "행과 열"이라는 구조가 사라지면 잃는 것을 짝과 이야기해 보세요.
모든 이미지는 숫자의 표다
그림을 그리면 코드가 된다 — 직접 확인!
2단원 픽셀 압축 실험실에서 그림을 그렸던 것, 기억하나요? 그때의 그림이 사실 2차원 리스트였습니다. 모든 디지털 이미지는 픽셀 값의 표 — 흑백이면 0과 1(또는 밝기 0~255), 컬러면 빨강·초록·파랑 세 장의 표가 겹친 것이죠. 아래에서 그림을 그리면 진짜 파이썬 코드가 생성됩니다!
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단원(인공지능)에서 이 이야기를 다시 만납니다!
차원이 늘 때마다 인덱스가 하나씩 — 동영상은 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의 텐서로 이어진다)