파이썬 IndexError: list index out of range 오류 완벽 해부 및 해결 가이드
![]() |
| < Python code editor with an IndexError > |
‘IndexError: list index out of range’는 파이썬 초보자들이 자주 마주치는 오류입니다. 이 오류는 리스트에서 잘못된 인덱스를 호출할 때 발생하는데, 겁먹을 필요 없습니다! 이 가이드를 통해 오류의 원인, 예방 방법, 그리고 실전 해결법을 쉽고 자세히 배워보겠습니다.
학습 목표
- IndexError: list index out of range 오류가 왜 발생하는지 이해하기
- 오류를 예방하고 해결하는 다양한 방법 배우기
- 실제 코드를 통해 문제를 해결하는 법 익히기
목차
- 오류란 무엇인가?
- 오류가 발생하는 이유
- 자주 하는 실수
- 오류 예방을 위한 3가지 핵심 방법
- 실전 예제와 해결 코드
- 직접 해보는 미션
- 다음에 배울 내용
1. 오류란 무엇인가?
파이썬을 배우다 보면 이런 오류 메시지를 볼 때가 있습니다:
IndexError: list index out of range
이 메시지는 “리스트에서 존재하지 않는 위치(인덱스)를 부르려고 했다”는 뜻입니다. 처음 보면 당황스럽지만, 이건 아주 흔한 실수 때문에 생기는 오류입니다. 예를 들어, 리스트에 3개의 항목이 있는데 4번째 항목을 부르려고 하면 파이썬이 “그런 건 없어!”라고 알려주는 거예요.
2. 오류가 발생하는 이유
이 오류는 리스트의 인덱스를 잘못 다룰 때 발생합니다. 파이썬 리스트는 각 항목에 번호(인덱스)를 붙여 관리합니다. 중요한 점은:
- 인덱스는 0부터 시작합니다.
- 리스트에 3개의 항목이 있다면, 인덱스는 0, 1, 2까지 존재합니다.
- 존재하지 않는 인덱스(예: 3, 4, …)를 호출하면 IndexError가 발생합니다.
간단한 예시
my_list = [10, 20, 30] # 3개의 항목 (인덱스: 0, 1, 2)
print(my_list[3]) # 오류! 인덱스 3은 존재하지 않음
결과:
IndexError: list index out of range
위 코드에서 my_list는 3개의 항목만 가지고 있으므로 인덱스는 0~2까지만 유효합니다. my_list[3]은 없는 위치를 호출했기 때문에 오류가 나는 거죠.
3. 자주 하는 실수
이 오류는 보통 다음 3가지 상황에서 자주 발생합니다. 각 상황을 이해하면 실수를 줄이는 데 큰 도움이 됩니다!
| 실수 | 설명 |
|---|---|
| 인덱스 범위 착각 | 리스트에 3개의 항목이 있으면 인덱스는 0~2까지만 존재합니다. 그런데 실수로 3번이나 그 이상을 호출하면 오류가 납니다. |
| 반복문에서 잘못된 인덱스 사용 | for나 while 반복문에서 리스트 길이를 초과하는 인덱스를 호출하면 오류가 발생합니다. |
| 빈 리스트 접근 | 리스트가 비어있는데([]) 인덱스(예: [0])를 호출하려 하면 오류가 납니다. |
예시: 반복문 실수
my_list = [1, 2, 3]
for i in range(4): # 0, 1, 2, 3까지 반복
print(my_list[i]) # 인덱스 3에서 오류 발생!
팁: 인덱스는 항상 0부터 시작하고, 리스트 길이보다 큰 숫자는 호출할 수 없다는 점을 기억하세요!
![]() |
| < Python list [10, 20, 30] > |
4. 오류 예방을 위한 3가지 핵심 방법
이제 이 오류를 피하는 실용적인 방법을 배워볼게요. 다음 3가지 방법을 사용하면 안전하게 코드를 작성할 수 있습니다.
방법 1: 리스트 길이 확인하기 (len() 사용)
리스트에 접근하기 전에 len() 함수로 리스트 길이를 확인하세요. 이렇게 하면 인덱스가 유효한지 미리 체크할 수 있습니다.
my_list = [10, 20, 30]
if len(my_list) > 2: # 인덱스 2가 존재하는지 확인
print(my_list[2]) # 안전하게 출력
else:
print("인덱스가 범위를 벗어났습니다.")
결과:
30
방법 2: try-except로 예외 처리하기
try-except 구문을 사용하면 인덱스 오류가 발생해도 프로그램이 멈추지 않고 부드럽게 처리할 수 있습니다.
my_list = [10, 20, 30]
try:
print(my_list[5]) # 존재하지 않는 인덱스
except IndexError:
print("인덱스 범위를 벗어났습니다!")
결과:
인덱스 범위를 벗어났습니다!
방법 3: enumerate()로 안전한 반복문 작성
리스트를 반복할 때 enumerate()를 사용하면 인덱스와 값을 함께 가져와서 실수를 줄일 수 있습니다.
my_list = [10, 20, 30]
for index, value in enumerate(my_list):
print(f"인덱스 {index}: 값 {value}")
결과:
인덱스 0: 값 10
인덱스 1: 값 20
인덱스 2: 값 30
enumerate()는 인덱스를 직접 계산할 필요 없이 리스트를 안전하게 순회할 수 있게 해줍니다.
5. 실전 예제와 해결 코드
이제 실제로 오류가 나는 코드를 보고, 이를 어떻게 고치는지 배워봅시다.
잘못된 코드
fruits = ['apple', 'banana', 'cherry']
print(fruits[3]) # 오류 발생!
결과:
IndexError: list index out of range
문제 원인: fruits 리스트는 3개의 항목(인덱스 0~2)만 있는데, 인덱스 3을 호출했습니다.
수정된 코드
fruits = ['apple', 'banana', 'cherry']
if len(fruits) > 3:
print(fruits[3])
else:
print("해당 인덱스에 값이 없습니다.")
결과:
해당 인덱스에 값이 없습니다.
설명: len(fruits)로 리스트 길이를 확인한 뒤, 인덱스 3이 유효하지 않음을 알려줍니다. 이렇게 하면 오류 없이 안전하게 실행됩니다.
추가 예제: 빈 리스트 처리
empty_list = []
if len(empty_list) > 0:
print(empty_list[0])
else:
print("리스트가 비어있습니다.")
결과:
리스트가 비어있습니다.
6. 직접 해보는 미션
이제 여러분이 직접 코드를 작성해볼 차례입니다! 다음 리스트를 사용해서 문제를 해결해보세요:
colors = ['red', 'green', 'blue']
colors리스트의 모든 항목을 안전하게 출력하는 코드를 작성하세요.- 인덱스 오류가 나지 않도록
len()함수와 조건문을 사용하세요. - (보너스)
try-except를 사용해서 인덱스 5를 호출했을 때의 오류를 처리해보세요.
예시 답변
colors = ['red', 'green', 'blue']
# 모든 항목 안전하게 출력
for index, color in enumerate(colors):
if index < len(colors):
print(f"인덱스 {index}: {color}")
# 인덱스 5 호출 시 오류 처리
try:
print(colors[5])
except IndexError:
print("인덱스 5는 존재하지 않습니다!")
결과:
인덱스 0: red
인덱스 1: green
인덱스 2: blue
인덱스 5는 존재하지 않습니다!
7. 다음에 배울 내용
이번 가이드에서는 IndexError의 원인과 해결법을 배웠습니다. 다음 단계에서는 리스트를 안전하게 다루는 고급 기술을 배워볼게요! 예를 들어:
for와while반복문에서 리스트를 다루는 방법- 리스트 컴프리헨션(List Comprehension)으로 효율적인 코드 작성
- 다양한 리스트 메서드(
append,pop,remove등) 활용법
요약
- IndexError: list index out of range는 리스트에서 존재하지 않는 인덱스를 호출할 때 발생합니다.
- 이를 피하려면:
len()으로 리스트 길이를 확인try-except로 예외 처리enumerate()로 안전한 반복문 작성
- 실전 예제와 미션을 통해 직접 코드를 작성해보면서 익숙해지세요!
이 가이드를 통해 IndexError를 완벽히 정복했다면, 이제 어떤 리스트든 자신 있게 다룰 수 있을 거예요! 🚀

