boost-devs / peer-session

🚀 부스트캠프 AI Tech 1기 U-Stage 4조 피어 세션 자료/질문 모음 (archived)
8 stars 2 forks source link

[MJ] iterator와 iterable 어떻게 다른가/리스트는 iterator가 아닌가 #16

Closed mj950425 closed 3 years ago

mj950425 commented 3 years ago

🙌 질문자


❓ 질문 내용

image

mj950425 commented 3 years ago

iterable 의 의미는 member를 하나씩 차례로 반환 가능한 object를 말한다. iterable 의 예로는 sequence type인 list, str, tuple 이 대표적이다. 우리가 사용하는 list는 iterable 하기 때문에 for문으로 인덱스 하나 하나에 접근이 가능하다고 한다. iter() 로 정의된 클래스는 전부 iterable 하다고 말할 수 있다고 한다.

Iterator 는 next() 메소드로 데이터를 순차적으로 호출 가능한 object 이다. 하지만 iterable한 객체는 전부 iterator라고 할 수는 없다고 한다.

위의 그림처럼 list는 iterator가 아니다. iterable 를 iterator로 바꿔주고 싶다면 iter() 메소드를 사용하면 된다. 우리가 사용하는 list가 next와 같이 for문으로 차례대로 호출이 가능한 이유는 for문이 자동적으로 list를 iterator로 변환해주어서 가능하다고 한다.

📄 참고 자료 https://bluese05.tistory.com/55

Heeseok-Jeong commented 3 years ago

앗 혹시 MJ 님, iter() 함수에 iterable 한 객체를 넣으면 iterator 객체로 나오니까 iterator를 iterable하게 바꿔주고 싶다면 iter() 메소드를 사용하면 된다 이 부분 반대 아닐까요?!

mj950425 commented 3 years ago

앗 혹시 MJ 님, iter() 함수에 iterable 한 객체를 넣으면 iterator 객체로 나오니까 iterator를 iterable하게 바꿔주고 싶다면 iter() 메소드를 사용하면 된다 이 부분 반대 아닐까요?!

헉 맞네요!! 감사합니다