이터레이터와 제너레이터를 사용한 데이터 그룹화
이번 포스트에서는 이터레이터(Iterator)와 제너레이터(Generator)를 사용하여 데이터를 그룹화하는 방법에 대해 알아보겠습니다. 이러한 기능은 데이터 처리나 반복 작업을 수행하는데 매우 유용합니다.
이터레이터(Iterator)
이터레이터는 반복 가능한 객체(iterable)에서 값을 차례대로 꺼내는 객체입니다. __iter__
와 __next__
라는 두 개의 매직 메서드를 구현하여 사용할 수 있습니다. 이터레이터는 반복문에서 사용되며, for
문이나 next()
함수를 통해 값에 접근할 수 있습니다.
class MyIterator:
def __init__(self, data):
self.index = 0
self.data = data
def __iter__(self):
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
value = self.data[self.index]
self.index += 1
return value
my_list = [1, 2, 3, 4, 5]
my_iter = MyIterator(my_list)
for item in my_iter:
print(item)
위 예시에서는 MyIterator
클래스를 정의하여 이터레이터를 구현했습니다. __iter__
메서드는 이터레이터 객체 자체를 반환하며, __next__
메서드는 다음 값을 반환하고 인덱스를 증가시킵니다. my_list
를 MyIterator
클래스의 인스턴스로 생성하고, for
문을 사용하여 값을 출력합니다.
제너레이터(Generator)
제너레이터는 이터레이터를 생성하기 위해 사용되는 함수입니다. 제너레이터 함수는 값을 반환하는 yield
키워드를 사용하여 값을 생성하고, 함수 호출이 끝나도 상태를 유지합니다.
def my_generator(data):
for item in data:
yield item
my_list = [1, 2, 3, 4, 5]
my_gen = my_generator(my_list)
for item in my_gen:
print(item)
위 예시에서는 my_generator
함수를 정의하여 제너레이터를 구현했습니다. for
문을 사용하여 실제 값을 반환하는 것처럼 사용합니다. 제너레이터 함수를 호출하면 제너레이터 객체가 반환되며, 이를 반복하여 값을 얻을 수 있습니다.
정리
- 이터레이터와 제너레이터는 데이터를 그룹화하거나 반복 처리하는데 사용됩니다.
- 이터레이터는
__iter__
와__next__
메서드를 구현하여 반복 가능한 객체로 만들 수 있습니다. - 제너레이터는
yield
키워드를 사용하여 값을 생성하는 함수입니다.
#tech #programming