1. a=1,2,3
으로 설정하고 list(a)을 하면 [1,2,3]으로 list가 잘 만들어지는데
a=1으로 설정하고 list(a)를 써보면 int is not iterable 이라면서 list 가 안 만들어집니다
근데 [a]으로 반환해보면 [1]로 정상적으로 반환이 됩니다. 왜 그런건가요?
2.a='1'+'2'
같이 설정하고 list(a)를 만들어보면 ['12']이렇게 붙어서 나오는게 아니고 ['1','2']이런식으로 떨어져서 반환이 됩니다 이건 왜그런거죠?
3.int is not iterable 이라는게 이해가 안갑니다
왜str같은문자열은 iterable가 되는데 int같은 숫자열은 왜 iterable이 안되는지
iterable이 안되면 어떤 제약이 있는지...
나도 초본데 그냥괄호는 튜플이고 대괄호가 리스트일껄 아몰르겟다 찾아봐
내가말한거는 제너레이터 관련인거같네 함수자체가 문자열바꾸는거라서 그런걸수도 잇음 곧바로 리스트로 넣으면 정수형도 당연될듯
list 함수는 인자로 iterable 받음
[]는 리터럴 신택스고 list는 함수라 다름
a = 1, 2, 3은 a = (1, 2, 3)이랑 동일하고 튜플은 iterable이므로 list 함수에 a넣는 거 가능
iterable은 쉽게 말하면 값을 하나씩 빼올 수 있다는 거임 int는 통채로 하나의 값이지 거기서 뭘 하나씩 빼준다는게 이상하자너
반면 문자열은 말 그대로 문자들의 열이니까 문자를 하나씩 빼준다는 개념이 가능하지 그래서 iterable
구체적으로는 iterator를 반환하는 __iter__ 매소드가 구현되어 있으면 iterable이고 객체 자신을 반환하는 __iter__ 메소드와 값을 뱉어내는 __next__ 메소드가 구현되어 있으면 iterator인데 이건 나중에 봐도 될듯
위에가 설명 잘 했네. int 타입은 iter, next가 구현되어 있지 않다는 말임. int 클래스를 상속받아서 iterable한 새로운 클래스를 만들어서 쓸 수 있음. 제약은 iterable 한 타입의 입력값에 넣으면 모두 저런 오류가발생함 - dc App