TIL #27 Python-iterator

강경훈·2020년 8월 24일
0
post-thumbnail

iterator: 값을 순차적으로 꺼내어 사용할 수 있는 객체

1. 반복 가능한 객체 확인

  • iterator인 객체는 __iter__ 매서드를 가지고 있다.
  • dir을 통해 해당 객체가 가지고 있는 매서드들을 확인 할 수 있고, __iter__을 가지고 있으면 iterator이다.
  • 반복 가능한 객체: string, list, tuple, range, dictionary, set

2. iterator

  • 반복 가능한 객체와 iterator는 다르다.
  • __iter__ 매서드 이용해 반복 가능한 객체를 iterator로 바꿀 수 있다.
my_list = [1, 2, 3,] #반복 가능한 객체
iter_my_list = __iter__(my_list) # my_list를 이요해 만든 iterator

3. __next__

  • iterator의 요소를 차례대로 가져오는 매서드
  • iterator 요소를 벗어나게 되면 StopIteration 이라는 예외 발생
numbers = [1, 2, 3]
iter_num = __iter__(numbers)
print(iter_num.__next__) #iterator의 첫번째 값 
print(iter_num.__next__) #iterator의 두번째 값
print(iter_num.__next__) #iterator의 세번째 값
print(iter_num.__next__) #iterator의 범위를 넘음
> 실행결과
1
2
3
StopIteration

4. iter(), next()

  • iter(): __iter__을 해주는 내장함수
  • next(): __next__을 해주는 내장함수
  • 예) dictionary의 키 값 뽑기
D = {'a':1, 'b':2, 'c':3}
D_iter = iter(D) #iter()로 iterator 생성
while True:
    try:
        key = next(D_iter) #next()로 iterator의 값을 key에 저장
    except: #iterator의 범위를 벗어나면 StopIteration 예외가 발생하고 while 종료
        break
    print(key)

5. For문의 동작 원리


출처: 길벗IT

profile
방랑하는 개발자

0개의 댓글