Python
Iterator 설명
techbard
2015. 7. 16. 16:10
반응형
- 이터레이터
- 대규모의 컨테이너를 생성하는 경우 다량의 메모리를 확보한 후 처리가 시작되기 때문에 부담을 줄이기 위한 목적
- 이터레이터 객체는 컨테이너를 하나씩 차례로 순회하는 메쏘드를 제공함
- All containers objects
- Like Strings, Tuples, Lists, Dictionaries, Range Objects
- iter() function -- returns an Iterable Object (it)
- next it calls __next__() method on it object
- Repeats __next__() till it gets "StopIteration"
# 리스트를 생성하는 경우 한 번에 생성을 완료하고 그 안에서 하나씩 순회하면서 처리할 수 있다.
l = range(1, 4)
for n in l:
print(n)
결과)
1
2
3
# 이터레이터 객체를 생성해서 __next__() 메쏘드를 부르면 컨테이너를 하나씩 만들고 처리할 수 있다.
n = range(1, 4)
it = iter(n)
print(it.__next__())
print(it.__next__())
print(it.__next__())
결과)
1
2
3
# 객체의 내부 메쏘드를 호출하지 않고 next() 외장함수를 사용할 수도 있다.
n = range(1, 4)
it = iter(n)
print(next(it))
print(next(it))
print(next(it))
결과)
1
2
3
# 존재하지 않는 시퀀스 객체를 호출하려고 하면 StopIteration 에러가 발생한다.
n = range(1, 2)
it = iter(n)
print(next(it))
print(next(it))
결과)
...
StopIteration
# for - in 구문과 함께 사용
n = range(1, 3)
it = iter(n)
for i in it:
print(i)
결과)
1
2
반응형