Python 2차원 리스트 인덱싱과 중첩 반복 출력 문제 풀이(Claude)
2026. 7. 11. 15:39ㆍ파이썬
📌 문제
다음은 파이썬으로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.
lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
for sub in lol :
for item in sub :
print(item, end = " ")
print()
단계별 실행
1행 — lol
lol = [[1,2,3], [4,5], [6,7,8,9]]
리스트 안에 리스트가 3개 들어있는 2차원 리스트입니다.
lol[0] = [1, 2, 3]
lol[1] = [4, 5]
lol[2] = [6, 7, 8, 9]
2행 — print(lol[0])
lol[0] = [1, 2, 3]
출력:
[1, 2, 3]
3행 — print(lol[2][1])
lol[2] = [6, 7, 8, 9]
lol[2][1] = 7 # 인덱스 1번 = 두 번째 원소
출력:
7
4~7행 — 중첩 반복문
- 바깥 for sub in lol: lol의 각 하위 리스트를 순회
- 안쪽 for item in sub: 그 하위 리스트 안의 숫자를 하나씩 순회하며 end=" "로 공백만 붙여서 출력
- 안쪽 반복이 끝날 때마다(즉 하위 리스트 하나를 다 돌면) print()로 줄바꿈
sub 안쪽 출력 (item, end=" ") 이후 print()
| [1,2,3] | 1 2 3 | 줄바꿈 |
| [4,5] | 4 5 | 줄바꿈 |
| [6,7,8,9] | 6 7 8 9 | 줄바꿈 |
✅ 최종 실행 결과
[1, 2, 3]
7
1 2 3
4 5
6 7 8 9
(각 줄 끝에 공백이 하나씩 더 있습니다: end=" " 때문)
⚠️ 함정 포인트
- lol[2][1]은 이중 인덱싱 — 먼저 lol[2]로 세 번째(인덱스 2번) 하위 리스트를 고르고, 그 안에서 다시 [1]로 두 번째 원소를 고릅니다.
- end=" "는 줄바꿈이 아니라 공백입니다 — 숫자들이 같은 줄에 이어지는 이유입니다.
- 바깥 print()(빈 괄호)의 위치가 중요 — 안쪽 for문 밖, 바깥 for문 안에 있어서 하위 리스트 하나가 끝날 때마다 줄이 바뀝니다. 만약 이 줄이 안쪽 for문 안으로 들어갔다면 숫자마다 줄이 바뀌었을 것입니다.
- print(lol[0])은 리스트 형태 그대로 출력 — [1, 2, 3]처럼 대괄호와 쉼표가 그대로 보입니다. 반면 반복문 안의 print(item, ...)은 숫자 하나씩 출력하므로 대괄호가 없습니다.
🎯 핵심 개념 정리
2차원 리스트의 이중 인덱싱
a = [[1,2],[3,4,5]]
a[1] # [3, 4, 5] (바깥 인덱스: 몇 번째 하위 리스트)
a[1][2] # 5 (안쪽 인덱스: 그 안의 몇 번째 원소)
end 옵션으로 출력 이어붙이기
print("A", end=" ")
print("B", end=" ")
print("C")
# 결과: A B C
빈 print()의 역할
인자 없이 print()만 호출하면 줄바꿈만 실행됩니다.
print("Hello", end="")
print()
print("World")
# 결과:
# Hello
# World
중첩 반복문에서 들여쓰기 위치의 의미
for sub in lol:
for item in sub:
print(item, end=" ") # 숫자 하나마다 실행
print() # sub(하위 리스트) 하나가 끝날 때마다 실행
✍️ 시험 답안용 한 줄 풀이
lol[0]은 첫 번째 하위 리스트인 [1, 2, 3]을 그대로 출력하고, lol[2][1]은 세 번째 하위 리스트 [6,7,8,9]의 두 번째 원소인 7을 출력한다. 이어지는 중첩 반복문은 각 하위 리스트의 숫자를 공백으로 구분해 한 줄에 출력하고, 하위 리스트가 끝날 때마다 줄을 바꾸므로 최종 결과는 [1, 2, 3], 7, 1 2 3 , 4 5 , 6 7 8 9 가 순서대로 출력된다.
🧠 미니 퀴즈
- lol[1][0]의 값은 무엇일까요?
- 안쪽 print(item, end=" ")에서 print()를 안쪽 for문 안으로 옮기면(들여쓰기 변경) 결과는 어떻게 달라질까요?
- lol에 [10]을 네 번째 하위 리스트로 추가하면 마지막 줄 출력은 어떻게 될까요?
정답
- 4 — lol[1]은 [4, 5]이고 그 중 인덱스 0번은 4
- 숫자 하나를 출력할 때마다 줄이 바뀌므로, 모든 숫자가 각각 한 줄씩(1, 2, 3, 4, 5, 6, 7, 8, 9) 세로로 출력됩니다.
- 새 줄이 하나 더 생기고, 그 줄은 10 (숫자 10 뒤에 공백 하나)이 출력됩니다.
'파이썬' 카테고리의 다른 글
| Python 문자열 슬라이싱과 % 포맷 결합 문제 풀이(Claude) (0) | 2026.07.11 |
|---|---|
| 문자열 조각을 이어 문장 완성하기(Chatgpt) (0) | 2026.07.11 |
| 좌표처럼 값을 꺼내고 행 단위로 출력하기(Chatgpt) (0) | 2026.07.11 |
| Python 클래스와 메서드 정의 빈칸 채우기 문제 풀이(Claude) (0) | 2026.07.11 |
| 계산기 클래스의 빈칸 완성하기(Chatgpt) (0) | 2026.07.11 |