有限リストに対して有限の繰り返し「有限のリストを走査する」ためのジェネレータは、次のように書く。使われているので、ジェネレータが返される。これをジェネレータ関数と呼ぶ。Trueを用いて、延々と回る無限ループに置き換えると、「無限リストを対象としたイテレータを生成する」ジェネレータとなる。倍数の無限リスト」が欲しい場合、次のように書くことができる。無限リストを表現する特別な記述方法はない。その代わり、「3の倍数」を延々と計算するループを利用する。用いることにより、1回のループごとに呼び出し元に制御が戻る。これにより、ループが最後まで終了するのを待たずに済む。文に渡した場合、ループが止まらない。呼出し回数を指定することにより、無限ループに陥らないようにする必要がある。range(0,10)]リスト内包表記で生成するのは有限のリストで、これを無限のリストと重ね合わせる。結果は、上記と同じ要素がリストとして返ってくる。ジェネレータをクラスから類推するジェネレータは、動作のイメージがつかみにくい。クロージャを理解したときと同じ要領で、関数をクラスに見立てると理解しやすい。