Pythonのジェネレータとイテレータの違い

PYTHON3 チュートリアル

Pythonのジェネレータとイテレータの違いについて

Pythonにおいて、ジェネレータ(generator)とイテレータ(iterator)は、どちらも反復処理(iteration)を行うための重要な概念です。しかし、それぞれ異なる役割と特性を持っています。

イテレータ(Iterator)

イテレータは、反復処理を行うためのオブジェクトであり、`__iter__()`と`__next__()`メソッドを持つことが特徴です。イテレータは一度反復を行うと、その状態を保持し、次の要素を返すことができます。

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_iter = MyIterator([1, 2, 3])
for item in my_iter:
    print(item)

ジェネレータ(Generator)

ジェネレータは、反復処理を行うための関数であり、`yield`キーワードを使用して値を生成します。ジェネレータは呼び出されるたびに一つの値を返し、その状態は保持されます。

def my_generator(data):
    for item in data:
        yield item

gen = my_generator([1, 2, 3])
for item in gen:
    print(item)

ジェネレータとイテレータの違い

ジェネレータとイテレータの主な違いは、ジェネレータは関数内で`yield`を使用して値を生成し、イテレータはクラス内で`__next__()`メソッドを実装して値を返す点です。ジェネレータは簡潔で効率的な反復処理を実現し、メモリ効率にも優れています。

Pythonのジェネレータとイテレータは、反復処理を行う際に便利な機能であり、適切に活用することでコードの可読性や効率性を向上させることができます。

ジェネレータとイテレータは、Pythonのプログラミング言語で非常に重要な概念です。ジェネレータは、イテレータを作成するための特殊な関数であり、イテレータは反復可能なオブジェクトです。

ジェネレータは、yield文を使用して値を返し、関数の実行を一時停止し、後で再開することができます。これにより、大量のデータをメモリに保存せずに反復処理を行うことができます。

一方、イテレータは、\_\_iter\_\_() と \_\_next\_\_() メソッドを持つオブジェクトで、次の要素を返すために使用されます。イテレータは、forループなどの反復処理で使用され、要素を逐次取得することができます。

つまり、ジェネレータはイテレータを作成するための特殊な関数であり、イテレータは反復処理を行うためのオブジェクトです。

購読
通知
0 Comments
Inline Feedbacks
View all comments