이터레이터 프로토콜을 구현한 데이터 구조

이터레이터 프로토콜은 파이썬에서 반복 가능한 객체(Iterable)를 표현하기 위한 규약입니다. 이 규약을 따르는 데이터 구조는 __iter__ 메서드를 구현하고, 이터레이터 객체를 반환해야 합니다.

이터레이터 객체는 __next__ 메서드를 구현하여 반복을 제어하고, 반복이 완료되면 StopIteration 예외를 발생시켜야 합니다. 이렇게 구현된 데이터 구조는 for 루프와 같은 반복문에서 사용될 수 있으며, 직접 요소에 접근할 수도 있습니다.

아래는 이터레이터 프로토콜을 구현한 데이터 구조의 예시 코드입니다.

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
        value = self.data[self.index]
        self.index += 1
        return value

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

for num in my_iterator:
    print(num)

위 예시 코드에서 MyIterator 클래스는 __iter____next__ 메서드를 구현하여 이터레이터 프로토콜을 따릅니다. __iter__ 메서드는 이터레이터 객체인 self를 반환하고, __next__ 메서드는 데이터 구조의 요소를 차례대로 반환합니다.

이러한 구현을 통해 MyIterator 객체는 for 루프에서 사용될 수 있고, 직접 요소에 접근할 수도 있습니다.

#python #이터레이터 #데이터구조