새소식

ML Development/Python - 2022.05.18

[Python] Iterable(반복 가능한 객체)와 Iterator(이터레이터) 이해하기

  • -

Iterable(반복 가능한 객체)이란?

 

Iterable의 의미와 효과

Iterable은 문자 그대로 반복 가능한 객체를 의미한다.

반복 가능함은 객체를 구성하는 요소가 여러 개이면서, 이 요소들을 한 번에 하나씩 꺼낼 수 있다는 것을 의미한다.

 

요소를 한 번에 하나씩 꺼낼 수 있다는 보장이 있다면, 굳이 객체의 모든 요소를 미리 메모리에 저장할 필요가 없다.

매번 실행마다 다음 요소에 해당하는 값만 새로 추가해주면 되기 때문이다.

 

이 경우 메모리를 절약할 수 있다는 장점이 생기게 되고, 이러한 특성을 Lazy Evaluation이라고 한다.

 

어떤 객체가 Iterable한가?

어떤 객체가 위와 같은 특성을 가지려면(반복 가능하려면) 해당 객체에 __iter__ 메소드가 있어야 한다.

 

따라서 hashattr과 같은 함수를 사용해서 객체의 iterable 여부를 확인할 수 있다.

hashattr(확인할 객체, "__iter__") # 있다면 해당 객체는 iterable!

 

Iterator = iter(iterable)

https://nvie.com/posts/iterators-vs-generators/

iterable 객체에 iter()를 적용하기만 하면 iterator(이터레이터)로 변경할 수 있다.

반복 가능한 객체가(아직 반복 X), 실제 한 번에 하나씩 반복될 때의 객체를 바로 이터레이터라고 부른다.

 

이터레이터는 매번 next()를 통해 반복이 진행된다.

 

따라서 iterator는 iter()next()를 메소드로 가진다.

 

iterator(이터레이터) 예시

대표적으로 우리가 많이 활용하는 이터레이터로는 for문이 있다.

 

for문의 실행 과정을 이터레이터를 통해 표현하면 아래와 같다.

파이썬(python) - 이터레이터(Iterator) (tistory.com)

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.