Iterator 객체
1. 개요
1
2
3
list1 = [1, 2, 3, 4, 5]
list1_iter = list1.__iter__()
print(list1_iter.__next__()) # 1이 출력된다.
- iterable 객체의 멤버로서 그 객체의 각 원소를 하나씩 차례대로 순회하여 가리키고자 할 때 사용하는 객체를 iterator 객체라 한다. 파이썬의 모든 iterable 객체는 메서드로 그 객체의 iterator 객체를 리턴하는 __iter__() 메서드를 갖는다.
- 파이썬의 iterator 객체는 __next__() 메서드를 갖는데, 이는 다음 두 기능이 있다.
-
그 객체가 현재 가리키는 iterable 객체 내 원소를 리턴한다.
-
그 객체가 그 객체가 현재 가리키던 iterable 객체 내 원소의 다음 순서에 있는 원소를 가리키게 한다.
- iterable 객체를 생성했을 때 그 iterator 객체는 그 iterable 객체의 첫 원소를 가리키고 있다.
2. iter() 함수와 next() 함수
-
iterable 객체에 대해
__iter__()메서드를 호출하는 대신, 인자로 iterable 객체를 전달하여 파이썬의 시스템 함수인iter()함수를 호출하면 그 객체의 iterator 객체가 리턴된다. -
iterator 객체에 대해
__next__()메서드를 호출하는 대신, 인자로 iterator 객체를 전달하여 파이썬의 시스템 함수인next()함수를 호출하면 그 객체가 가리키던 원소의 값이 리턴되고 그 객체는 기존 가리키던 원소의 다음 원소를 가리킨다.