이터레이터는 값을 순차적으로 꺼내올 수 있는 객체다.
함수로는 __iter__
로 표현하며 dir()
를 통해 __iter__
함수를 검색한 뒤 해당 객체가 반복 가능한지 확인이 가능 하다.
이터레이터를 변수에 저장한 후에 __next__
함수를 호출하면 for문이 동작하는 것 처럼 값을 하나씩 꺼내올 수 있다. __next__
함수는 다음 요소를 하나씩 꺼내오는 함수다.
L = [1, 2, 3]
iterator_L = L.__iter__()
print(iterator_L.__next__())
print(iterator_L.__next__())
print(iterator_L.__next__())
print(iterator_L.__next__())
__next__
함수를 호출한 결과 1,2,3이 출력되고 Stop Iteration이 발생한 것을 확인할 수 있다.
파이썬은 내장 함수로 __iter__
와 __next__
를 편하게 사용할 수 있게 해주는 iter()
와 next()
함수가 존재한다. 다음 코드는 해당 함수를 사용한 코드다.
L = [1,2,3,4]
I = iter(L) # == I = L.__iter__()
while True:
try:
X = next(I) # I.__next__()
except StopIteration:
break
print( X**2, end=" ")
딕셔너리도 반복가능한 객체라서 앞서본 리스트와 같이 __iter__
함수와 __next__
함수를 사용할 수 있고 파이썬 기본함수인 iter, next 또한 사용할 수 있습니다. 다음의 간단한 키를 출력하는 딕셔너리에 대한 for 문을 while문으로 구현해 보세요.
D = {'a':1, 'b':2, 'c':3}
for key in D.keys():
print(key)