pythonのジェネレータについて

pythonのジェネレータについて、紹介します。

range(1,10)は、ジェネレータのひとつです。

ジェネレータは、メモリに全ての数字を展開しないというのが特徴

大きくなる可能性があるシーケンスを作りたい場合に便利に、ジェネレータ関数は便利です。

  • ジェネレータ関数の例

    >>> def my_range(first=0, last=10, step=1):
    ...   number = first
    ...   while number < last:
    ...     yield number
    ...     number += step
    ...
    >>>
    >>> list(my_range(step=2))
    [0, 2, 4, 6, 8]
    

値をreturnでなく、yieldで返すことを除けば通常の関数と同じです。

注意

python2ではrangeはジェネレータではなく、xrange()がジェネレータとして用意されています。

以上です。

勉強に使用している本

非常に分かりやすくておすすめです。

プログラムは経験あるけどPythonは初心者って方に、絶対おすすめの1冊です。

comments powered by Disqus