본문 바로가기
  • BLG-ZYNGIROK-모토-꿈꾸며-배우고-나누며-이루다
ICT/Python

Python 오류 | TypeError: list indices must be integers or slices, not list

by dazwischen 2021. 11. 29. 15:40
반응형

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)​

 

반응형

댓글