Python에서의 Iterator 이해 및 활용
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
Python 개발자 및 중급 이상의 프로그래머
핵심 요약
iter()
및__iter__()
메서드를 사용하여 리스트, 튜플, 딕셔너리 등 다양한 자료형에서 Iterator를 생성할 수 있음.- Generator는
yield
키워드를 통해 MemoryError를 방지하는 Lazy Evaluation 방식의 Iterator 생성 가능. itertools
모듈의repeat()
,pairwise()
,combinations()
는 복잡한 데이터 처리에 효율적.deepcopy()
를 사용하여 Iterator의 안전한 복사 가능.
섹션별 세부 요약
1. Iterator 생성 방법
iter()
함수 또는__iter__()
메서드를 사용하여 리스트, 튜플, 세트, 딕셔너리, 문자열,range()
객체에서 Iterator 생성 가능.- 예:
v2 = iter(v1)
또는v2 = v1.__iter__()
- 딕셔너리의 경우
keys()
,values()
,items()
메서드를 통해 각 요소에 대한 Iterator 생성.
2. Generator와 Generator Comprehension
yield
키워드를 사용한 Generator는 메모리 효율적인 Iterator 생성.- 예:
def func():
yield 'a'
yield 'b'
(x.upper() for x in ['a', 'b', 'c', 'd'])
와 같이 간단한 표현식으로 Iterator 생성.3. itertools 모듈 활용
itertools.repeat()
은 특정 값 반복,pairwise()
는 인접 요소 쌍 생성,combinations()
는 조합 생성.- 예:
from itertools import combinations
v = combinations(iterable='ABC', r=2)
4. Iterator 복사 및 동일성 확인
copy()
는 얕은 복사,deepcopy()
는 깊은 복사 가능.v1 is v2
를 통해 변수가 동일한 Iterator를 참조하는지 확인 가능.
결론
- Generator와 itertools를 활용해 메모리 효율적인 Iterator 구현.
deepcopy()
를 사용하여 Iterator의 안전한 복사 및 상태 관리.__iter__()
와__next__()
메서드를 통해 커스텀 Iterator 구현 가능.