0%

Iterator,Generator

Iterator

collection(list, tuple, set, dict), 문자열 등은 for문을 사용해서 데이터를 하나씩 처리할 수 있습니다. 이처럼 데이터를 하나씩 처리할 수 있는 collection이나 sequence를 Iterable Object라고 합니다.

image

파이썬 built-in 함수 iteriterator를 리턴합니다. Iteratornext()를 사용하여 다음 element를 가져옵니다. 만약, 더이상 next() element가 없을 경우 StopIteration Exception을 발생시킵니다.

image

Geneator

GeneratorIterator를 생성하는 함수로 함수안에 yield를 사용하여 데이터를 하나씩 리턴합니다. Generator함수가 호출되면 함수 실행 중 처음 만나는 yield에서 값을 리턴합니다. 이 후 Generator함수가 호출되면 직전에 실행되었던 yield문에서부터 다음 yield문을 만날때까지 실행합니다. Generator함수를 변수에 할당하는 변수는 Generator객체가 됩니다.

image

Generator표현식

Generator표현식은 List Comprehension과 유사하여 Generator Comprehension이라고도 불립니다. Generator표현식은 ()를 사용하며 Generator 객체를 리턴합니다. 실행은 하지 않고 Generator표현식만 가지며 yield방식으로 Lazy Operation(게으른 연산)을 수행합니다.

image