본문 바로가기
DATA SCIENCE

iterator(이터레이터), iterable(이터레이블), generator(제너레이터)

by 망고데이 2018. 12. 2.
반응형

그림 출처: https://nvie.com/posts/iterators-vs-generators/


iterator: 

- next() 메서드를 사용해서 다음 값을 생성할 수 있는 객체

- 내부에 현재 상태 값을 유지하고 있다

- 값을 요청하기 전까지는 idle 상태


iterable:

- 대표적으로 배열이 있다. a=[1,2,3]

- iter() 메서드를 통해서 iterator 객체를 생성할 수 있다.


generator:

- iterator의 특수한 형태

- generator 표현식으로 만들 수 있다.

- list comprehension 에서 대괄호만 소괄호로 변경한 형태

- (num for num in range(5))

- generator 함수를 통해 만들 수 있다.

- return 대신 yield 키워드를 사용

- 다음번 호출 시 yield 다음부터 다시 함수 로직이 진행된다. 


- data science에서 많은 양의 데이터를 한 번에 메모리에 올리기 힘들 때, 부분적으로 가져오기 위해 iterator와 generator 를 사용한다

- pandas의 read_csv도 chunksize를 지정해주면 iterator로 사용할 수 있다.

반응형