파이썬에서의 반복자(Iterator) (1)
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- Python 개발자
- 난이도: 기초 수준 (반복자 개념과 사용법 학습)
핵심 요약
- 반복자(Iterator)는
__iter__()
와__next__()
메서드를 구현한 불변 객체로, 메모리 효율을 위해 요소를 한 번에 하나씩 반환합니다. iter()
또는__iter__()
로 생성되며,next()
또는__next__()
로 요소를 얻을 수 있습니다.- 인덱싱/슬라이싱 불가,
len()
사용 시list()
,tuple()
등으로 변환 후 또는more_itertools.ilen()
을 사용해야 합니다.
섹션별 세부 요약
1. 반복자(Iterator)의 정의와 특성
- 반복자는
StopIteration
예외를 발생시켜 종료되는 반복 가능한 객체입니다. len()
사용 시,list()
,tuple()
등으로 형변환하거나more_itertools.ilen()
을 사용해야 합니다.- 인덱싱/슬라이싱 불가 (예:
v2[0]
또는v2[0:2]
는 오류 발생).
2. `iter()` 함수의 사용법
iter(object, sentinel)
의 두 가지 인자:
- object
: iterable
또는 callable
타입 (예: v1 = ['a', 'b', 'c', 'd']
에서 iter(v1)
).
- sentinel
: object
가 sentinel
과 동일한 값을 반환할 때 오류를 발생시킴 (예: iter(get_random_numbers, 3)
).
3. `next()` 및 `__next__()` 메서드
next(iterator, default)
에서default
를 지정하면 반복자가 종료될 때default
값을 반환 (예:next(v2, 'No value')
).__next__()
는next()
와 동일한 기능을 제공하지만, 인자 없이 호출됩니다.
4. `len()` 사용 제한
- 반복자 자체로
len()
사용 불가 (예:len(v2)
는 오류). - 형변환 또는
more_itertools.ilen()
을 통해 길이 계산 (예:len(list(v2))
,ilen(v5)
).
5. 예제 코드
iter()
로 생성된 반복자:
```python
v2 = iter(v1)
print(next(v2)) # 'a'
```
more_itertools.ilen()
사용 예:
```python
from more_itertools import ilen
print(ilen(v5)) # 4
```
결론
- 반복자 사용 시
iter()
와next()
를 활용하고,len()
계산은list()
/tuple()
변환 또는more_itertools.ilen()
을 통해 처리하세요. StopIteration
예외 처리를 위해next()
의default
인자를 활용하는 것이 실무에 유리합니다.