cover_python_cookbook

を参考にしているブログ一覧 投稿一覧へ戻る

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

Tags: generator , iterable , iteration , iterator , yield , python , cookbook

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

Problem: イテレーションをサポートするカスタムオブジェクトを作成したいが、イテレータプロトコルの実装では苦労したくない。 Solution: イテレーションをサポートするオブジェクトを作成する一番簡単な手段は generator 関数を利用することでしょう。 " Delegating Iteration " の項で取り上げたクラスを再利用してみます。 今回は Nod…

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

Tags: generator , iterable , iteration , yield , python , cookbook

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

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

Python Cookbook [Delegating Iteration : 独自クラスへのイテレーション機能の実装]

Tags: iterable , iterator , __iter__ , python , cookbook

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

Problem: list や tuple といったイテラブルを属性値として含む独自のコンテナクラスがある場合に、そのクラス自体でイテレーション機能を提供したい。 Solution: クラス内で __iter__() メソッドを定義し、実態として、内部で保持するコンテナのイテレーターに動作をお任せするだけです、楽チンです。 class Topping: def …

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

Tags: iterable , iteration , stopiteration , python , cookbook

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

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

Python Cookbook [Manipulating Dates Involving Time Zones : タイムゾーンを考慮した日付操作]

Tags: datetime , timedelta , pytz , timezone , python , cookbook , olson

Published 2020年4月23日22:37 by T.Tsuyoshi

Problem: 東京でテレワークをしている僕にニューヨークの同僚から電話。 「現地時間(2020年)4月27日午前9時30分から会議をするから、ちゃんと出席してね」。 さて、僕は何時にテレビ会議システムの前にいなきゃダメなんだろう? Solution: タイムゾーンが関係するほとんど全ての問題には pytz モジュールが使用できます。 Python3 からは、datet…