본문 바로가기

걍 사는겨

파이썬 소소한(?) 에러 해결기 - TypeError: 'int' object is not iterable

for i in range(1,4):
    a = x*number(y,i) 
    print(a)
    print(list(a))

 

print (list(a))에서 아래와 같은 에러가 났다.

TypeError: 'int' object is not iterable

 

처음에 'iterable'이라는 말만 거슬려서 for i in range 만 뒤적뒤적,, 했는데 한 블로그에서 도움을 받았다!

블로그 글을 보고 블로그를 쓰는,,,창조경제인가

 

http://codingschool.info/rboard2/index.php?type=view&table=start_python&num=53

 

http://codingschool.info/rboard2/index.php?type=view&table=start_python&num=53

list() 함수는 인자로서 시퀀스(문자열, 튜플) 또는 집합(딕셔너리) 또는 iterable(반복할 수 있는) 개체(range())가 와야 합니다. 다음과 같은 형태로 사용해야 합니다. >>> tup = (1,2,3) >>> 

codingschool.info

 

블로그의 글을 읽고 이해한 바는 다음과 같다. 

list()는 ()안의 객체를 list라는 자료형으로 만들어 주는 함수이다. 

 

난 234라는 정수형 변수를 [2,3,4] 라는 list로 만들고 싶어서 저런 생각없는 코딩을 해버렸다.....ㅋ

 

하지만 list함수는 파라미터로 올 수 있는 자료형이 한정되어 있었고, 문자열이나 튜플같이 반복되는, []나 () 안에 갇히는 자료형만이 가능했다. map 함수와 같은가,, 

 

왜냐면 list()의 내부는 list([객체])이기 때문이다..!!

 

list(a)가 에러나자 number(리스트 자료형의 객체).append(a) 를 적용시켰더니 에러가 나지 않았다. 하지만 append 함수는 파라미터 자체를 number의 원소로 넣어주는 함수, [ , , ,a] 로 만들어주는 함수이기에 가능한 것이였다. 내가 원한 바로 [2,3,4]로 만들어주진 않았다.

 

234 를 [2,3,4]로 만들려면 %와 /를 이용해서 직접계산하거나, 234 -> "234" ->["2","3","4"] -> [2,3,4] 의 변환과정을 거쳐야 할 것같다. 실행 시간을 줄이려면 둘 중 뭐가 나을까?!