유승훈

TypeError: 'float' object cannot be interpreted as an integer 본문

languages/Python

TypeError: 'float' object cannot be interpreted as an integer

seunghuni96 2021. 1. 23. 14:47

Python에서 range 함수를 많이 씁니다. 숫자 리스트 자체를 만들어서 쓰기도 하고, For loop를 통해서 편리하게 인자를 전달 할 수 있습니다. 보통은 정수값을 넣어서 쓰는 경우가 많은데, 종종 위와 같이 실수 데이터 처리가 필요한 경우도 있습니다.

 

그럴 때 range에 실수를 넣으면

"TypeError: 'float' object cannot be interpreted as an integer"

이런 에러가 발생합니다. "float을 integer로 해석할 수 없다"는 것인데, 이유가 무엇일까요? range는 정수형만을 인자로 받습니다. 따라서 실수는 처리할수가 없는 것이죠. 이럴때 Numpy의 arrange를 사용할 수 있습니다. range와 비슷하지만 몇가지 차이점이 있습니다.

 

1. range는 정수만 쓸 수 있지만, arange는 실수도 사용할 수 있다.

2. range는 range 자료형을, arange는 array를 반환한다.

 

Python2에서는 range가 list를 반환했었습니다. range 자료형은 list, tuple보다 훨씬 작은 메모리를 차지한다는 장점이 있습니다. 기본적으로 Start, Stop, Step을 저장하고, 필요한 경우 개별 아이템이나 Subrange를 저장하기 때문입니다. 바뀐 뒤에는 필요하다면 range의 데이터들을 직접 list에 넣어주어야 합니다.

 

이렇게 실수를 사용해야하는 경우에는 Numpy의 arange를 활용하는것도 좋은 방법입니다.

Comments