Programming Language/Python

이터레이터

D4tai1 2018. 8. 10.

 

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

'Programming Language > Python' 카테고리의 다른 글

제너레이터_문제  (0) 2018.08.10
제너레이터  (0) 2018.08.10
입력  (0) 2018.08.10
변환  (0) 2018.08.10
서식 및 포맷  (0) 2018.08.10

댓글