- generatorは
yield
使うやつ? listとかで呼び出すときに,必要な要素だけ返すからメモリ効率が悪くならない
ジェネレータクラスから作ったイテレータ生成オブジェクトは何度もループで使える
- ジェネレータ関数で生成したオブジェクトはループで回せるのは一回
class MyIteratorClass(object): def __init__(self): pass def __iter__(self): # do something if satisfy_end_condition: raise StopIteration() yield some_value my_iterator = MyIteratorClass() # 同じ内容のprintが2回出力 for n in my_iterator(): print(iterator) for n in my_iterator(): print(iterator)
def MyIteratorFunction(): # do something if satisfy_end_condition: raise StopIteration() yield some_value my_iterator = MyIteratorFunction() # 2回目のforループでは何も出力されない for n in my_iterator(): print(iterator) for n in my_iterator(): print(iterator)