반응형
그림 출처: 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로 사용할 수 있다.
반응형