이터레이터와 제너레이터를 활용한 데이터 반복 횟수 제한

이터레이터와 제너레이터는 파이썬에서 데이터를 반복하는 강력한 도구입니다. 이들을 활용하여 데이터를 특정 횟수로 제한하여 반복할 수 있습니다. 이는 데이터 처리 및 분석 작업에서 매우 유용한 기능입니다.

이터레이터란?

이터레이터는 값을 한 번에 하나씩 반환하는 객체입니다. 파이썬에서는 __next__() 메서드를 통해 다음 값을 반환하며, 더 이상 반환할 값이 없을 때 StopIteration 예외를 발생시킵니다.

class MyIterator:
    def __init__(self, limit):
        self.limit = limit
        self.current = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.current < self.limit:
            value = self.current
            self.current += 1
            return value
        else:
            raise StopIteration

my_iterator = MyIterator(5)
for value in my_iterator:
    print(value)

위 예제에서는 MyIterator 클래스를 정의하여 특정 횟수(limit)로 값을 반환하는 이터레이터를 만들었습니다. __iter__() 메서드를 이용해 이터레이터 객체를 반환하고, __next__() 메서드에서는 값을 반환하고 현재 값을 증가시키는 동작을 수행합니다. 반복문을 통해 이터레이터를 사용할 수 있습니다.

제너레이터란?

제너레이터는 함수의 실행 중간에 값을 반환하고, 그 상태를 유지하는 객체입니다. 제너레이터 함수는 yield 키워드를 사용하여 값을 반환하며, 함수가 호출될 때마다 이전 상태의 값을 유지합니다. 제너레이터는 이터레이터의 한 유형으로, __iter__()__next__() 메서드가 내장되어 있습니다.

def my_generator(limit):
    current = 0
    while current < limit:
        yield current
        current += 1

my_gen = my_generator(5)
for value in my_gen:
    print(value)

위 예제에서는 my_generator 함수를 정의하여 yield 키워드를 통해 값을 반환하는 제너레이터를 만들었습니다. while 반복문을 사용하여 조건을 만족하는 동안 값을 반환하고, yield로 현재 값을 유지합니다. 마찬가지로 반복문을 통해 제너레이터를 사용할 수 있습니다.

데이터 반복 횟수 제한하기

이제 이터레이터와 제너레이터를 활용하여 데이터의 반복 횟수를 제한해봅시다. 다음은 제너레이터 함수를 수정하여 반복 횟수를 제한하는 방법입니다.

def my_generator(limit):
    current = 0
    count = 0
    while count < limit:
        yield current
        current += 1
        count += 1

my_gen = my_generator(5)
for value in my_gen:
    print(value)

위 예제에서는 count 변수를 추가하여 반복 횟수를 계산하고, limit 값과 비교하여 반복을 제한합니다. 이렇게 수정된 제너레이터 함수는 주어진 횟수만큼 값을 반환하고 반복을 종료합니다.

결론

이터레이터와 제너레이터를 활용하여 데이터의 반복 횟수를 제한하는 방법을 살펴보았습니다. 이를 통해 데이터 처리 작업에서 필요한 횟수로 반복할 수 있으며, 메모리 절약 및 효율적인 작업을 수행할 수 있습니다.

#python #이터레이터 #제너레이터 #데이터반복 #횟수제한