이터레이터와 제너레이터를 활용한 데이터 흐름 제어
이터레이터와 제너레이터는 데이터 흐름을 제어하기 위해 매우 유용한 도구입니다. 이들을 사용하면 데이터를 순차적으로 처리하고 필요한 만큼의 데이터를 생성할 수 있습니다. 이번 포스트에서는 이터레이터와 제너레이터의 개념과 활용 방법을 살펴보겠습니다.
이터레이터란?
이터레이터는 컬렉션 내의 요소들을 차례대로 접근할 수 있는 객체입니다. 이터레이터는 __iter__()
와 __next__()
메서드를 구현하여 동작합니다. __iter__()
메서드는 이터레이터 객체 자체를 반환하고, __next__()
메서드는 다음 요소를 반환합니다. 만약 더 이상 요소가 없을 경우 StopIteration
예외를 발생시킵니다.
아래는 이터레이터의 예시 코드입니다.
class MyIterator:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
result = self.data[self.index]
self.index += 1
return result
my_list = ['apple', 'banana', 'cherry']
my_iter = MyIterator(my_list)
for item in my_iter:
print(item)
제너레이터란?
제너레이터는 이터레이터를 생성하는 함수입니다. 제너레이터 함수는 yield
키워드를 사용하여 데이터를 반환하고 일시 중단하며, 다음 호출 시 이전 상태를 유지한 후 다음 데이터를 반환합니다. 이렇게 하면 필요한 시점에서 데이터를 생성하고 반환할 수 있습니다.
아래는 제너레이터의 예시 코드입니다.
def my_generator(data):
for item in data:
yield item
my_list = ['apple', 'banana', 'cherry']
my_gen = my_generator(my_list)
for item in my_gen:
print(item)
마무리
이터레이터와 제너레이터를 활용하면 데이터를 효율적으로 처리하고 제어할 수 있습니다. 이들은 컬렉션의 크기에 상관없이 필요한 만큼의 데이터를 처리할 수 있다는 큰 장점을 가지고 있습니다. 따라서 이터레이터와 제너레이터를 적절히 활용하여 데이터 흐름을 제어하는 것을 고려해 보세요.
#tech #python