본문 바로가기
컴퓨터 언어/Python

[Python 3] iterator 란 무엇인가.

by SuperMemi 2020. 3. 10.
반응형

- iterator 객체 : 값을 차례대로 꺼낼 수 있는 객체이다.

- iterator는 iterable한 객체를 내장함수 또는 iterable객체의 메소드로 객체를 생성할 수 있다.

 

2020/03/10 - [Python] - [Python 3] iterable 란 무엇인가. 그리고 함수에는 map, zip?

 

[Python 3] iterable 란 무엇인가. 그리고 함수에는 map, zip?

iterable 이란 반복 가능하다는 뜻이다. 한 번에 하나씩 자료를 반환할 수 있는 파이썬 객체이다. 간단히 말해 for 문으로 그 값을 출력 할 수 있는 것을 의미한다. iterable한 객체 종류 - All sequence types :..

supermemi.tistory.com


파이썬 내장함수 iter() 를 사용해 iterator 객체를 만들 수 있다.

>>> a = [3,4,5,6,7,8]
>>> a_iter = iter(a)
>>> type(a_iter)
<class 'list_iterator'>

>>> b = "star"
>>> b_iter = iter(b)
>>> type(b_iter)
<class 'str_iterator'>

 

iterable객체의 메소드 __iter__ 로 iterator 객체를 만들 수 있다.

>>> b = "star"
>>> dir(b)
['__add__', '__class__', '__contains__', '__delattr__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__getnewargs__', '__gt__',
'__hash__', '__init__', '__init_subclass__', '__iter__', '__le__',
'__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize',
'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find',
'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal',
'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 
'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans',
'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 
'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 
'swapcase', 'title', 'translate', 'upper', 'zfill']

>>> b_biter = b.__iter__()
>>> type(b_biter)
<class 'str_iterator'>

 


iterator는 값을 차례대로 꺼낼 수 있는 객체다.

 - 넣어진 순서대로 출력, 마지막엔 StopIteration 이라는 예외 발생.

>>> a = [3,4,5,6,7,8]
>>> a_iter = iter(a)
>>> type(a_iter)
<class 'list_iterator'>

>>> next(a_iter)
3
>>> next(a_iter)
4
>>> next(a_iter)
5
>>> next(a_iter)
6
>>> next(a_iter)
7
>>> next(a_iter)
8
>>> next(a_iter)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

마찬가지로 메소드 __next__()를 이용해서 끄낼 수 있음.

>>> b_biter.__next__()
's'
>>> b_biter.__next__()
't'
>>> b_biter.__next__()
'a'
>>> b_biter.__next__()
'r'
>>> b_biter.__next__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

 

참고

https://wikidocs.net/16068

 

 

 

반응형