반응형

💬 IndexError: list index out of range
리스트의 범위를 벗어난 인덱스를 접근할 때 자주 나오는 에러입니다.

 

❗ 에러 메시지 예시

 

IndexError: list index out of range

 

리스트나 튜플 등 인덱스로 접근 가능한 자료형에서
존재하지 않는 인덱스를 호출하면 발생합니다.

 


 

🔍 원인: 리스트 길이보다 큰 인덱스를 호출

 

my_list = [10, 20, 30]
print(my_list[3])  # ❌ 존재하지 않음 → IndexError

 

→ 인덱스는 0부터 시작합니다. 위 리스트의 인덱스는 0, 1, 2뿐입니다.

 


 

🧪 자주 발생하는 상황

① for문에서 범위를 잘못 설정

for i in range(len(my_list) + 1):
    print(my_list[i])  # 마지막에 IndexError 발생

 

② 빈 리스트에 접근

data = []
print(data[0])  # ❌ 빈 리스트 → 어떤 인덱스도 존재하지 않음

 


 

 

🛠️ 해결 방법

1. 리스트의 길이를 먼저 확인하기

if len(data) > 0:
    print(data[0])

 

2. try-except로 안전하게 처리

try:
    print(my_list[3])
except IndexError:
    print("유효하지 않은 인덱스입니다.")

 


 

✅ 마무리 정리

  • 인덱스는 항상 0 ~ len(list)-1 사이여야 합니다.
  • len() 함수로 범위를 확인하고, 잘못된 접근은 예외처리로 막으세요.
반응형
반응형

💬 TypeError: 'int' object is not subscriptable
흔하지만 당황스러운 이 에러,
대체 왜 뜨는 걸까요?

 

 

❗ 에러 메시지 예시

TypeError: 'int' object is not subscriptable

이 에러는 정수(int) 를 마치 리스트나 문자열처럼 인덱싱(슬라이싱) 하려 할 때 발생합니다.

 

 

🔍 원인: 정수는 인덱싱이 불가능한 타입

subscriptable이라는 말은 쉽게 말해 **[]로 접근이 가능한가?**를 뜻합니다.
예를 들어 리스트나 문자열은 인덱스로 접근이 가능하죠:

 

my_list = [10, 20, 30]
print(my_list[0])   # ✅ 가능

 

그런데 정수는?

 

num = 123
print(num[0])       # ❌ TypeError 발생

 

정수는 인덱싱할 수 없기 때문에 에러가 납니다.

 

 

🧪 자주 발생하는 실수

① 함수 결과를 잘못 다룰 때

def get_number():
    return 123

result = get_number()
print(result[0])   # ❌ 리스트라고 착각하고 인덱싱 → 에러 발생

 

return 값이 리스트인지, 숫자인지 확인 필요!

 

 

② 타입이 바뀐 것을 인식 못할 때

data = {'score': 100}
score = data['score']
print(score[0])    # ❌ 숫자인데 인덱싱함

 

→ score는 숫자입니다. score[0]은 불가능하죠.

 

🛠️ 해결 방법

1. 값의 타입 확인하기

print(type(score))   # <class 'int'>

 

2. 필요한 타입으로 변환하거나 인덱싱하지 않기

  • 리스트나 문자열처럼 다루고 싶다면 문자열로 변환
num = 123
num_str = str(num)
print(num_str[0])   # ✅ '1'

 

3. 함수나 변수 이름이 의도한 타입과 일치하는지 확인하기

 

✅ 마무리 정리

  • TypeError: 'int' object is not subscriptable는
    숫자를 리스트처럼 다뤄서 생기는 에러입니다.
  • []를 쓸 수 있는 자료형은 리스트, 문자열, 튜플 등이고
    int, float, bool 등은 subscriptable하지 않아요.
  • 값을 확인하고, 슬라이싱하려면 적절한 타입으로 변환하세요.

 

📘 함께 보면 좋은 글

반응형

+ Recent posts