プログラムとか 思ったこととか 徒然ブログ 投稿一覧へ戻る

タグ "iteration" が付いている投稿一覧

Python Cookbook [Implementing the Iterator Protocol : イテレータープロトコルの実装]

Tags: Python , Cookbook , generator , iterable , iteration , iterator , yield

Published 2020年5月9日9:29 by T.Tsuyoshi

Problem: イテレーションをサポートするカスタムオブジェクトを作成したいが、イテレータプロトコルの実装では苦労したくない。 Solution: イテレーションをサポートするオブジェクトを作成する一番簡単な手段は generator 関数を利用することでしょう。 " Delegating Iteration " の項で取り上げたクラスを再利用してみます。 今回は Node クラスとしてツリー構造を模倣し、ルート階層から子階層へとノードを縦断していくようなイテレータを実装します。 class Node: def __init__(self, value): self._value …

Python Cookbook [Creating New Iteration Patterns with Generators : ジェネレーターを利用した独自イテレーションパターンの実装]

Tags: Python , Cookbook , generator , iterable , iteration , yield

Published 2020年5月7日19:19 by T.Tsuyoshi

Problem: range() や reversed() といった組み込み関数とは異なるイテレーションパターンを実装したい。 Solution: generator 関数を利用して実装します。 例えば、ある範囲内、あるステップ数で浮動小数点数を生成したいなら次のようになるでしょう。 def float_range(start, stop, step): x = start while x < stop: …

Python Cookbook [Manually Consuming an Iterator : 手作業によるイテレーション操作]

Tags: Python , Cookbook , next , StopIteration , iterable , iteration

Published 2020年4月24日21:08 by T.Tsuyoshi

今回からイテレーション関連の tips を取り上げていきます。 Problem: イテラブル (iterable) 中の要素を for ループを使わずに処理しろ、って、無茶言うよ、本当に。 Solution: 手作業でイテラブルを処理するには next() 関数を利用し、コード内で StopIteration 例外を捕まえるようにします。 例えば、ファイルから手作業で1行1行読み込んでいく処理は以下のようになります。 with open('../data/products.txt') as f: …