タグ

ブックマーク / ozsys.cocolog-nifty.com (1)

  • Pythonのyield文 - 綺麗なコードが良い

    Pythonは、リスト内包式(list comprehension expressions)を使ってリストを生成することができる。 しかし、生成したリストの要素の最初のほうだけを使って、後は使わない場合があるプログラムを考えると、一度に全て計算してしまうのは無駄だ。計算コストとメモリ領域の無駄がある。 できれば、必要になった時に、必要な分だけ計算したい。 こういう計算方法を遅延評価と言うが、Pythonには遅延評価を行う仕組みが用意されている。ジェネレータ式(generator expressions)がそれだ。 ジェネレータ式はこう書く。 >>> squares = (x ** 2 for x in range(5)) ジェネレータ式が生成するリスト要素は、イテレータ(上の場合はsquares)のnextメソッドが呼ばれる度に計算される。 >>> squares.next() 0 >>>

    Pythonのyield文 - 綺麗なコードが良い
  • 1