Programming Language/Python
이터레이터
1. iterator(이터레이터)란?
- next() 메소드를 이용하여 데이터를 순회하는 object를 말한다.
- 전부 순회한 경우(마지막 데이터 순회) StopIteration exception 발생시킨다.
2. iterable(이터러블)이란?
- 멤버를 하나씩 차례로 반환 가능한 object를 말한다.
- 종류에는 순차접근이 가능한 list, str, tuple 등이 있다.
[소스]
for i in range(1,4) : print i,
[실행결과]
1 2 3
- 위와 같은 for문도 내부적으로 보면 range() 함수로 생성된 list가
iterable하여 순차적으로 멤버에 접근하고 반환하여 사용한 것이다.
- 순차접근이 불가능한 dict 및 file도 iterable 하다.
[소스]
data = {'x' : 10, 'y' : 20, 'z' : 30} for i in data : print i,
[실행결과]
y x z
3. iterator 와 iterable
- iterable한 object전부가 iterator은 아니다.
- 이런 것은 iterator가 사용하는 next() 메소드로 접근이 불가능하다.
- iterable한 리스트를 iterator로 변환하려면 iter()라는 built-in 함수를 사용하면 된다.
- 기존에 iter() 함수를 사용하지 않아도 for문을 사용하여 접근이 가능했던 이유는
반복하는 동안 내부에서 임시로 list를 iterator로 자동변환 해주었기 때문이다.
word = list("test") it_word = iter(word) print type(it_word) try : while True : print next(it_word), except : print chr(10), "StopIteration"
[실행결과]
<type 'listiterator'>
t e s t
StopIteration
댓글