2026. 7. 11. 15:38ㆍ파이썬
2차원 리스트의 인덱싱과 중첩 반복문
1. 문제
다음은 Python으로 작성된 프로그램이다. 프로그램을 실행했을 때의 출력 결과를 작성하시오.
lol = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
print(lol[0][0])
print(lol[2][1])
for sub in lol:
for item in sub:
print(item, end=" ")
print()
2. 주요 포인트
이 문제에서 확인해야 할 내용은 다음과 같습니다.
① 2차원 리스트의 구조
리스트 안에 또 다른 리스트가 들어 있는 형태를 중첩 리스트 또는 2차원 리스트라고 합니다.
lol = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
내부 리스트를 구분하면 다음과 같습니다.
lol[0] = [1, 2, 3]
lol[1] = [4, 5]
lol[2] = [6, 7, 8, 9]
② 이중 인덱스
lol[바깥쪽 인덱스][안쪽 인덱스]
첫 번째 인덱스로 내부 리스트를 선택하고, 두 번째 인덱스로 그 리스트 안의 값을 선택합니다.
③ 중첩 for문
바깥쪽 for문은 내부 리스트를 하나씩 가져옵니다.
안쪽 for문은 선택된 내부 리스트의 숫자를 하나씩 가져옵니다.
④ end=" "의 역할
print(item, end=" ")
숫자를 출력한 후 줄을 바꾸지 않고 공백을 출력합니다.
⑤ 빈 print()의 역할
print()
한 내부 리스트의 출력이 끝나면 줄을 바꿉니다.
3. 풀이
3-1. 중첩 리스트 확인
lol = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
변수 lol에는 총 3개의 내부 리스트가 들어 있습니다.
0번 리스트: [1, 2, 3]
1번 리스트: [4, 5]
2번 리스트: [6, 7, 8, 9]
리스트의 인덱스는 0부터 시작합니다.
3-2. 첫 번째 출력문
print(lol[0][0])
먼저 lol[0]을 확인합니다.
lol[0]
결과는 다음과 같습니다.
[1, 2, 3]
여기에서 다시 0번 값을 선택합니다.
lol[0][0]
[1, 2, 3]
↑
0번 값
따라서 첫 번째 출력값은 다음과 같습니다.
1
3-3. 두 번째 출력문
print(lol[2][1])
먼저 lol[2]를 확인합니다.
lol[2]
결과는 다음과 같습니다.
[6, 7, 8, 9]
각 값의 인덱스는 다음과 같습니다.
인덱스: 0 1 2 3
값 : 6 7 8 9
1번 인덱스의 값은 7입니다.
lol[2][1] = 7
따라서 두 번째 출력값은 다음과 같습니다.
7
3-4. 바깥쪽 반복문
for sub in lol:
lol에 들어 있는 내부 리스트가 하나씩 변수 sub에 저장됩니다.
반복 순서는 다음과 같습니다.
첫 번째 반복: sub = [1, 2, 3]
두 번째 반복: sub = [4, 5]
세 번째 반복: sub = [6, 7, 8, 9]
3-5. 첫 번째 내부 리스트 출력
첫 번째 반복에서 sub는 다음과 같습니다.
sub = [1, 2, 3]
안쪽 반복문이 각 숫자를 하나씩 가져옵니다.
for item in sub:
print(item, end=" ")
출력되는 값은 다음과 같습니다.
1 2 3
end=" "가 있으므로 각 숫자는 줄바꿈 없이 공백으로 구분됩니다.
내부 반복문이 끝난 후 다음 코드가 실행됩니다.
print()
따라서 다음 줄로 이동합니다.
3-6. 두 번째 내부 리스트 출력
두 번째 반복에서 sub는 다음과 같습니다.
sub = [4, 5]
안쪽 반복문으로 출력하면 다음과 같습니다.
4 5
출력이 끝난 후 빈 print()에 의해 줄을 바꿉니다.
3-7. 세 번째 내부 리스트 출력
세 번째 반복에서 sub는 다음과 같습니다.
sub = [6, 7, 8, 9]
안쪽 반복문으로 출력하면 다음과 같습니다.
6 7 8 9
4. 반복 과정 한눈에 보기
sub = [1, 2, 3]
item = 1 → 2 → 3
출력: 1 2 3
sub = [4, 5]
item = 4 → 5
출력: 4 5
sub = [6, 7, 8, 9]
item = 6 → 7 → 8 → 9
출력: 6 7 8 9
5. 전체 출력 흐름
첫 번째 출력문:
1
두 번째 출력문:
7
중첩 반복문의 출력:
1 2 3
4 5
6 7 8 9
6. 정답
1
7
1 2 3
4 5
6 7 8 9
7. 시험에서 주의할 부분
lol[2][1]을 lol[1][2]로 혼동하면 안 됩니다
lol[2][1]
해석 순서는 다음과 같습니다.
2번 내부 리스트 선택
↓
[6, 7, 8, 9]
↓
1번 값 선택
↓
7
sub에는 숫자가 아니라 리스트가 들어갑니다
for sub in lol:
sub에 들어가는 값은 다음과 같습니다.
[1, 2, 3]
[4, 5]
[6, 7, 8, 9]
item에는 내부 리스트의 숫자가 들어갑니다
for item in sub:
예를 들어 sub가 [1, 2, 3]이면 item에는 다음 값이 차례로 들어갑니다.
1 → 2 → 3
빈 print()의 들여쓰기가 중요합니다
for sub in lol:
for item in sub:
print(item, end=" ")
print()
빈 print()는 안쪽 반복문이 끝난 후 실행됩니다.
따라서 내부 리스트 하나를 모두 출력할 때마다 줄이 바뀝니다.
8. 시험 풀이 요약
lol[0][0]은 첫 번째 내부 리스트 [1, 2, 3]의 첫 번째 값이므로 1입니다.
lol[2][1]은 세 번째 내부 리스트 [6, 7, 8, 9]의 두 번째 값이므로 7입니다.
중첩 반복문은 각 내부 리스트의 숫자를 공백으로 구분하여 출력하고, 내부 리스트 하나의 출력이 끝날 때마다 줄을 바꿉니다.
따라서 최종 출력 결과는 다음과 같습니다.
1
7
1 2 3
4 5
6 7 8 9
'파이썬' 카테고리의 다른 글
| 문자열 조각을 이어 문장 완성하기(Chatgpt) (0) | 2026.07.11 |
|---|---|
| Python 2차원 리스트 인덱싱과 중첩 반복 출력 문제 풀이(Claude) (0) | 2026.07.11 |
| Python 클래스와 메서드 정의 빈칸 채우기 문제 풀이(Claude) (0) | 2026.07.11 |
| 계산기 클래스의 빈칸 완성하기(Chatgpt) (0) | 2026.07.11 |
| Python 2차원 리스트와 중첩 반복문 문제 풀이(Claude) (0) | 2026.07.11 |