반응형
파이썬에서 이터레이터(Iterator) 는 컬렉션의 요소들을 순차적으로 접근할 수 있는 객체입니다. 이터레이터는 두 가지 주요 기능을 제공합니다:
- __iter__(): 이 메서드는 이터레이터 객체 자신을 반환합니다. 이 메서드는 이터러블 객체에서 호출되며, 객체가 이터러블한지 확인하는 역할을 합니다.
- __next__(): 이 메서드는 순차적으로 다음 값을 반환하며, 더 이상 값이 없으면 StopIteration 예외를 발생시킵니다.
예시 코드 1: 간단한 이터레이터 구현
class MyIterator:
def __init__(self, start, end):
self.current = start
self.end = end
def __iter__(self):
return self # 이터레이터 객체를 반환
def __next__(self):
if self.current >= self.end:
raise StopIteration # 반복을 종료하는 예외
self.current += 1
return self.current - 1
# 사용 예시
my_iter = MyIterator(0, 5)
for number in my_iter:
print(number)
# 출력
0
1
2
3
4
이 예제에서는 MyIterator 클래스를 정의하고, __iter__()와 __next__() 메서드를 구현하여 0부터 4까지의 숫자를 순차적으로 반환하는 이터레이터를 만들었습니다.
예시 코드 2: iter()와 next() 함수 사용
파이썬의 내장 iter() 함수와 next() 함수는 이터레이터와 함께 사용됩니다.
my_list = [10, 20, 30]
iterator = iter(my_list) # 리스트에서 이터레이터 생성
print(next(iterator)) # 10
print(next(iterator)) # 20
print(next(iterator)) # 30
# print(next(iterator)) # StopIteration 예외 발생
# 출력
10
20
30
여기서 iter() 함수는 리스트에서 이터레이터를 생성하고, next() 함수는 이터레이터에서 순차적으로 값을 가져옵니다. 값이 더 이상 없을 때 StopIteration 예외가 발생합니다.
예시 코드 3: 제너레이터 함수로 이터레이터 만들기
파이썬의 제너레이터(generator)는 이터레이터를 쉽게 만들 수 있는 특별한 함수입니다. yield 키워드를 사용하여 이터레이터를 정의합니다.
def count_up_to(max):
count = 1
while count <= max:
yield count # 값을 반환하고 함수 상태를 기억함
count += 1
# 사용 예시
for number in count_up_to(3):
print(number)
# 출력
1
2
3
이 예제에서 count_up_to 함수는 yield를 사용하여 값을 하나씩 반환합니다. 제너레이터는 호출될 때마다 이전 상태를 기억하며, next()가 호출될 때마다 yield에서 지정한 값을 반환합니다.
요약:
- 이터레이터는 순차적으로 값에 접근할 수 있는 객체입니다.
- __iter__()와 __next__() 메서드를 구현하여 이터레이터를 직접 만들 수 있습니다.
- iter()와 next()를 사용하여 이터레이터와 상호작용할 수 있습니다.
- 제너레이터 함수(yield)를 사용하여 이터레이터를 간편하게 생성할 수 있습니다.
반응형
'프로그래밍 > [ Python ]' 카테고리의 다른 글
[Python] Matplotlib (0) | 2024.11.22 |
---|---|
[Python] Lambda (0) | 2024.11.21 |
python 정규 표현식 regex (0) | 2024.11.19 |
[Python] DataFrame (1) (0) | 2024.11.18 |
[Python] JSON 처리 (1) | 2024.11.15 |