반응형
e파이썬을 이용 중 for문에서 인덱스를 잘못 사용할 경우 "TypeError: list indices must be integers or slices, not list" 이와 같은 오류가 나타날 수 있다. 문제점과 해결방안은 다음과 같다.
파이썬 for문 사용 시 list 오류
먼저 다음 코드를 보고 문제가 있는지 파악해 보자.
Alphabet = ["P", "Y", "T", "H", "O", "N"]
for p in Alphabet :
print(Alphabet[p])
문제점을 알고 있다면 위의 오류의 핵심을 파악 한 것이고 아직 모르겠다면 다음의 설명을 보면 된다.
문제점
다시 한 번 오류 문을 살펴보자. "TypeError: list indices must be integers or slices, not list" 리스트 인텍스는 정수나 슬라이스여야만 한다. 리스트가 오면 안 된다. 여기서 핵심은 리스트가 오면 안 된다는 것이다. p는 for문에서 인덱스로 사용될 수 있으나 그때는 반복 횟수를 정해주는 집합이 수를 가리킬 때 얘기이다. 위에서 for문 안에 있는 Alphabet은 하나의 리스트이고 for문이 반복되면서 지칭하는 것은 숫자 리스트의 순서 1, 2, 3... 이 아니고 P, Y, I, H, O N이다.
해결책 1
위 예제에서 해결책은 간단하다. Alphabet을 print 함수 내에서 쓰지 않는 것이다.
Alphabet = ["P", "Y", "T", "H", "O", "N"]
for p in Alphabet :
print(p)
해결책 2
for 문의 p를 1, 2, 3... 과 같이 수를 이용하고 싶을 때는 리스트의 길이를 구해서 이용하면 된다.
Alphabet = ["P", "Y", "T", "H", "O", "N"]
for p in range(len(Alphabet)) :
print(p)
반응형
'ICT > Python' 카테고리의 다른 글
Python | 절대경로와 상대경로 이용하는 방법 (0) | 2021.11.16 |
---|---|
Python Selenium | Error 시스템에 부착된 장치가 작동하지 않습니다 (0x1F) (0) | 2021.11.11 |
댓글