이터레이터를 이용한 커스텀 데이터 순회

이터레이터(Iterator)는 데이터를 순회하고 반복하는 데 사용되는 객체입니다. 파이썬에서는 for문을 통해 컬렉션의 요소를 가져오는 데 많이 사용되지만, 자체적으로 이터레이터를 구현하여 커스텀 데이터를 순회할 수도 있습니다.

이터레이터란?

이터레이터는 __iter____next__ 메서드를 구현한 객체입니다. __iter__ 메서드는 현재 객체 자체를 반환하고, __next__ 메서드는 다음 요소를 반환합니다. __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
        current = self.data[self.index]
        self.index += 1
        return current

위의 코드는 MyIterator 클래스를 정의하고, data 리스트를 이터레이션하는 간단한 예제입니다. __iter__ 메서드는 self를 반환하고, __next__ 메서드는 현재 요소를 반환하고 인덱스를 증가시킵니다. 인덱스가 리스트의 길이를 초과하면 StopIteration 예외가 발생합니다.

커스텀 데이터 순회하기

이제 MyIterator 클래스를 사용하여 커스텀 데이터를 순회해 보겠습니다.

my_data = [1, 2, 3, 4, 5]
my_iterator = MyIterator(my_data)

for item in my_iterator:
    print(item)

위의 코드에서는 my_data 리스트를 MyIterator 클래스의 인스턴스인 my_iterator에 전달합니다. 그리고 for문을 사용하여 my_iterator를 순회하고 각 요소를 출력합니다.

이렇게 하면 for문을 통해 기본적인 데이터 구조 외에도 커스텀 데이터를 순회할 수 있습니다.

#python #이터레이터