SUPPORT UKRAINE
- Your indifference to the act of cruelty can thrive rogue nations like Russia -
を参考にしているブログ一覧
Python Cookbook [Implementing the Iterator Protocol : イテレータープロトコルの実装]
Published 2020年5月9日9:29 by mootaro23
Problem:
イテレーションをサポートするカスタムオブジェクトを作成したいが、イテレータプロトコルの実装では苦労したくない。
Solution:
イテレーションをサポートするオブジェクトを作成する一番簡単な手段は generator 関数を利用することでしょう。
" Delegating Iteration " の項で取り上げたクラスを再利用してみます。
今回は Nod…
Python Cookbook [Creating New Iteration Patterns with Generators : ジェネレーターを利用した独自イテレーションパターンの実装]
Published 2020年5月7日19:19 by mootaro23
Problem:
range() や reversed() といった組み込み関数とは異なるイテレーションパターンを実装したい。
Solution:
generator 関数を利用して実装します。
例えば、ある範囲内、あるステップ数で浮動小数点数を生成したいなら次のようになるでしょう。
def float_range(start, stop, step):
…
Python Cookbook [Delegating Iteration : 独自クラスへのイテレーション機能の実装]
Published 2020年5月1日19:41 by mootaro23
Problem:
list や tuple といったイテラブルを属性値として含む独自のコンテナクラスがある場合に、そのクラス自体でイテレーション機能を提供したい。
Solution:
クラス内で __iter__() メソッドを定義し、実態として、内部で保持するコンテナのイテレーターに動作をお任せするだけです、楽チンです。
class Topping:
def …
Python Cookbook [Manually Consuming an Iterator : 手作業によるイテレーション操作]
Published 2020年4月24日21:08 by mootaro23
今回からイテレーション関連の tips を取り上げていきます。
Problem:
イテラブル (iterable) 中の要素を for ループを使わずに処理しろ、って、無茶言うよ、本当に。
Solution:
手作業でイテラブルを処理するには next() 関数を利用し、コード内で StopIteration 例外を捕まえるようにします。
例えば、ファイルから手作業で1…
Python Cookbook [Manipulating Dates Involving Time Zones : タイムゾーンを考慮した日付操作]
Published 2020年4月23日22:37 by mootaro23
Problem:
東京でテレワークをしている僕にニューヨークの同僚から電話。
「現地時間(2020年)4月27日午前9時30分から会議をするから、ちゃんと出席してね」。
さて、僕は何時にテレビ会議システムの前にいなきゃダメなんだろう?
Solution:
タイムゾーンが関係するほとんど全ての問題には pytz モジュールが使用できます。
Python3 からは、datet…
Python Cookbook [3.15. Converting Strings into Datetimes : 文字列を Datetime 型へ変換する]
Published 2020年4月21日18:59 by mootaro23
Problem:
日付形式の文字列を datetime オブジェクトへ変換したい。
Solution:
Python 標準の datetime モジュールの利用で簡単に実現できます。
from datetime import datetime
text = "2020-04-21"
a = datetime.strptime(text, '%Y-%m-%d')
b …
Python Cookbook [Finding the Date Range for the Current Month : その月は何日まで?]
Published 2020年4月18日18:17 by mootaro23
Problem:
ある月の全ての日を簡単にループ処理したい。
Solution:
対象となる月の日数分のリストを用意するような必要はありません。
開始日(その月の1日)と終了日(翌月の1日)を取得し、datetime.timedelta オブジェクトを利用してその間を1日ずつループしていきます。
from datetime import datetime, date, ti…