Table of Contents

728x90

3까지는 가능하지만 4부터는 에러가 난다 더 이상 뽑을게 없으니깐.

 

for문에 넣어서 iterator1의 값들을 print해주고 싶지만

이미 앞에서 iterator1을 next에 넣어서 사용했기 때문에 더이상 사용할 수 없다.

이터레이터는 일회성 특징을 가진다

그래서 print(a)가 아무것도 나오지 않는다.

 

이터레이터를 다시 정의시키고 for문을 돌리면 정상적으로 1,2,3 값을 프린트한다.

 

 

  • 이터레이터는 iter()로 정의하고 next()로 다음값을 뽑는다.
  • 이터레이터는 한 번 사용하면 다시 사용할 수 없다.
  • 메모리 효율을 위해 그때 그때 필요한 값을 뽑아쓸 때 사용한다.

 

 

예를 들어 음식점에 가서 번호표를 뽑아야 한다고 생각해보자.

만약 우리가 기존의 for문을 돌리면 1부터 100까지 번호표가 한번에 촤라락 나올 것이다.

그런데 iterator를 쓰면

띵동 1번 고객님 입장하세요 (몇 분 후)

띵동 2번 고객님 입장하세요 (20분 후)

띵동 3번 고객님 입장하세요

이렇게 순차적으로 1번 2번 숫자를 출력할 수 있다.

아래 처럼 응용코드를 작성해보자.

 

 

 

next(mygen)을 실행할 때 마다 1번째, 2번째 순차적으로 숫자가 출력된다.

위에서는 iter를 따로 만들지 않았지만 yield라는 제너레이터를 썼다.

yield는 이터레이터를 생성해주는 함수이다.

 

따라서 yield를 쓰면 iter를 쓸 필요가 없다. 

yield 키워드를 사용하면 Python에서 자동으로 이터레이터를 생성하기 때문이다.

yield와 next만 활용하면 된다.

 

'Python' 카테고리의 다른 글

문자열 처리 str / repr  (1) 2024.04.21
Type Annotation Convention을 따르자  (0) 2024.04.21
클래스Class / 클로저Closure / 데코레이터Decorator  (1) 2024.04.20
Numpy Array를 쌓기  (0) 2024.04.20
Numpy Array 쪼개기  (0) 2024.04.20