좌표처럼 값을 꺼내고 행 단위로 출력하기(Chatgpt)

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