파이썬에서 데이터를 리스트(List)나 튜플(Tuple)로 관리하다 보면 가장 흔하게 마주치는 에러가 바로 IndexError: list index out of range입니다.

1. IndexError: list index out of range 왜 발생할까?
이 에러의 메시지를 직역하면 "리스트의 인덱스 범위를 벗어났다"는 뜻입니다. 파이썬의 리스트는 0부터 시작하는 인덱스 번호를 가지고 있는데, 존재하지 않는 번호를 호출할 때 발생합니다.
대표적인 발생 상황
- 빈 리스트 접근: 데이터가 하나도 없는 리스트에서 첫 번째 요소(
[0])를 꺼내려 할 때 - 오프 바이 원(Off-by-one) 에러: 리스트의 길이가 5인데 인덱스 5를 호출하는 경우 (인덱스는 0, 1, 2, 3, 4까지만 존재)
- 반복문 조건 설정 실수: 리스트의 길이를 초과하여 반복 횟수를 지정했을 때
# 오류 사례
fruits = ["apple", "banana"]
print(fruits[2]) # IndexError 발생 (인덱스는 0, 1만 존재)
# 빈 리스트 사례
empty_list = []
print(empty_list[0]) # IndexError 발생
2. IndexError 해결을 위한 3가지 실무 전략
단순히 인덱스 숫자를 수정하는 것보다, 코드 자체에서 에러를 방지하는 구조를 만드는 것이 중요합니다.
① 리스트 길이 확인 (len() 활용)
가장 기본적이면서도 확실한 방법입니다. 인덱스에 접근하기 전, 리스트에 데이터가 있는지와 내가 찾는 인덱스가 범위 안에 있는지 조건문으로 확인합니다.
if len(fruits) > 2:
print(fruits[2])
else:
print("해당 인덱스에 데이터가 없습니다.")
② 예외 처리 (try-except)
데이터가 불규칙하게 들어오거나, 오류 발생 시 프로그램이 중단되지 않고 다음 단계를 수행해야 할 때 유용합니다.
try:
target = my_list[idx]
except IndexError:
target = None # 기본값 할당
③ 안전한 슬라이싱(Slicing) 활용
파이썬 슬라이싱의 놀라운 특징은 범위를 벗어나도 에러를 내지 않는다는 점입니다. 특정 인덱스의 요소를 안전하게 가져오고 싶을 때 활용할 수 있습니다.
# 인덱스 10이 없어도 에러 대신 빈 리스트 [] 반환
safe_item = my_list[10:11]
3. 반복문에서 IndexError 예방하기
리스트를 순회할 때 인덱스 번호를 직접 계산하다 보면 실수가 잦습니다. 파이썬다운(Pythonic) 방식으로 코드를 작성하면 IndexError를 원천 차단할 수 있습니다.
인덱스 대신 직접 순회하기
직접 인덱스 i를 관리하는 대신, 리스트의 요소를 바로 꺼내는 for item in list: 형식을 사용하세요.
enumerate() 함수 활용
값과 인덱스가 동시에 필요하다면 range(len(list)) 대신 enumerate()를 사용하는 것이 훨씬 안전하고 가독성이 좋습니다.
# 권장하는 방식
for index, fruit in enumerate(fruits):
print(f"{index}번째 과일은 {fruit}입니다.")
핵심 요약 정리
- IndexError는 리스트에 존재하지 않는 위치 번호를 호출할 때 발생한다.
- 파이썬의 인덱스는 0부터 시작하며, 마지막 인덱스는 (리스트 길이 - 1)이다.
- 접근 전
len()함수로 길이를 체크하거나,try-except로 예외 처리를 한다. - 반복문에서는 인덱스 계산보다 enumerate()나 직접 순회 방식을 사용하여 실수를 방지하자.
IndexError는 알고리즘을 짤 때나 대량의 데이터를 처리할 때 자주 우리를 괴롭히지만, 파이썬의 인덱싱 규칙만 정확히 이해하면 아주 쉽게 해결할 수 있습니다. 오늘 알려드린 안전한 접근법들을 통해 더 견고한 코드를 작성해 보시기 바랍니다!
'오류 > 파이썬' 카테고리의 다른 글
| [Python 파이썬] ModuleNotFoundError 오류 해결 방법 (0) | 2026.01.17 |
|---|---|
| [Python 파이썬] TypeError 오류 해결 방법 (0) | 2026.01.15 |
| [Python 파이썬] IndentationError 오류 해결 방법 (0) | 2026.01.14 |
| [Python 파이썬] SyntaxError 오류 해결 방법 (0) | 2026.01.13 |