[Python]Iterator 속성 공부
Iterator
-
__iter__
는 반복자 개체를 반환 -
하나의 원소를 꺼내서 사용하려면
__next__
사용 -
StopIterator
: 모든 원소를 처리하면 반복자 객체의 원소를 다 처리했다는 의미로 이 예외 발생 -
반복자 class를 정의할 때는
__iter__
,__next__
2개를 반드시 구현
1
2
3
4
5
6
7
8
9
10
11
class Iterator:
def __init__(self,iterable):
self.iterable = iterable
def __iter__(self):
return self
def __next__(self):
if not self.iterable:
raise StopIteration("데이터가 없음")
return self.iterable.pop(0)
1
it = Iterator([1,2,3,4,5])
1
it.iterable
[1, 2, 3, 4, 5]
1
next(it)
1
1
next(it)
2
1
it.iterable
[3, 4, 5]
-
다시 사용하려면 새로운 반복자 개체를 만든다
-
순환문에서 처리 시 모든 원소 다 소진 후에 예외가 발생하지 않는다
1
2
3
it_1 = Iterator([1,2,3,4,5])
for i in it_1:
print(i)
1 2 3 4 5