1. TOP
  2. プログラム
  3. ソフト
  4. python
  5. ジェネレーター

ジェネレーター

2019-04-30_085945_GX1

ジェネレター

Pythonのシーケンスそ作成するオブジェクトである。ジェネレター
があれば、シーケンス全体を作ってメモリに格納しなくても、(巨大に
なることがある)シーケンスを反復処理できる。ジェネレーターは、イテ
レータのデータソースになることが多い。
range()で1から100までのづべての整数の合計をしている
>>>sum(range(1, 102))


5050

ジェネレータは、反復処理のたびに、最後に呼び出されたどこにいたかを
管理し、次の値を返す。これは、以前の呼び出しにつて何も覚えておらず
、いつも同じ状態で1行目を実行する通常の関数とは異なる。
大きくなる可能性があるシーケンスを作りたいが、ジェネター内包表記に
収めるにはコードが大きすぎるときには、ジェネレーター関数を書く
値をreturnで返す代わりにyield文で返すことを除けば、通常の関数と
同じです。

>>>def my_range(first=0, last=10, step=1):
>>> number = first
>>> while number < last:
>>> yield number
>>> number += step

>>>a = my_range
>>>print(a)





>>>ranger = my_range(1,5)
>>>for x in ranger:
>>> print(x)


1
2
3
4