본문 바로가기

컴퓨터/Python

이터레이터(iterator)

순회 가능한 객체(리스트, 튜플, 문자열)의 요소에 순서대로 접근할 수 있는 객체


for문에서 지정한 순회 가능한 객체에서 이터레이터 객체를 가져옴(객체의 첫번째 요소를 가리킴)

이터레이터 안의 __next__() 메서드를 실행(현재 이터레이터가 가리키는 객체의 요소를 반환하고 다음 요소로 이터레이터를 옮김)

for구문은 StopIteration 예외를 만날 때까지 반복

>>> for element in [1, 2, 3]:

print(element)

1

2

3

>>> for element in (1, 2, 3):

print(element)

1

2

3

>>> for key in {'one':1, 'two':2}:

print(key)

two

one

>>> for char in "123":                     <<<문자열의 한 문자씩 순회

print(char)

1

2

3



__next__()는 내장 함수 next()를 사용해 실행할 수도 있음

>>> s = 'abc'

>>> it = iter(s)

>>> it                   <<<이터레이터 객체

<str_iterator object at 0x103750450>

>>> next(it)   <<<next 함수는 iterator가 가리키는 값을 반환 후 다음 요소를 가리킴

'a'

>>> next(it)

'b'

>>> it.__next__()

'c'

>>> next(it)  <<<요소의 끝 부분에서 __next__()를 실행시 StopIteration 예외 발생

Traceback (most recent call last):

  File "<pyshell#138>", line 1, in <module>

    next(it)

StopIteration

'컴퓨터 > Python' 카테고리의 다른 글

if 문  (0) 2013.07.09
제너레이터  (0) 2013.07.09
__doc__ 속성과 help 함수  (0) 2013.07.08
pass  (0) 2013.07.08
재귀적 함수 호출  (0) 2013.07.08