SUPPORT UKRAINE
- Your indifference to the act of cruelty can thrive rogue nations like Russia -
タグ
python
を含むブログ一覧
【 Effective Python, 2nd Edition 】入力元のデータサイズが大きい場合は、リスト内包表記 ( list comprehension ) ではなくジェネレータ式 ( generator expression ) の利用を検討しよう!
Published 2020年6月30日21:59 by mootaro23
リスト内包表記では、入力元シーケンスの各要素に1対1で対応した要素からなる新たなリストインスタンスが作成される場合もあります。
この場合、入力元のデータが非常に大きければメモリ消費もそれに伴って大きくなってしまいます。
例えば、テキストファイルを読み込み、各行に含まれる文字数を取得するリスト内包表記を記述するとしましょう。
最終的には、ファイルの行数文の文字数をセットするためのメモ…
【 Effective Python, 2nd Edition 】引数として受け取った値を関数内で複数回「消費」する場合には要注意! イテレータ ( iterator ) とコンテナ ( container ) の違いをちゃんと認識しよう!
Published 2020年6月29日20:44 by mootaro23
関数が引数としてリストをとる場合、そのリストを関数内部で複数回参照することはよくあります。
例えば、台湾旅行に行った日本人が訪れた観光地ごとの訪問者数のリストがあるとします (千人/年)。
そして人気度をみるために、それぞれの観光地が占める割合を計算したいとしましょう。
そのためには、まず訪問者数の合計を求め、続けて、それぞれの観光地の訪問数をその合計で割ることになりますね…
【 Effective Python, 2nd Edition 】リストを返す関数を作るなら、ジェネレータを返しちゃダメか1回立ち止まって考えよう、の巻
Published 2020年6月27日19:16 by mootaro23
結果としてシーケンスを返す関数を作成する場合、最も一般的な選択肢は「リストを返す」ということでしょう。
次の例は、受け取った文字列について、文字列中の各単語の先頭インデックス番号と該当する単語のタプルからなるリストを返すものです。
sentence = "Nana is cute and very popular among my friends."
def index…
【 Effective Python, 2nd Edition 】assignment expression (walrus operator, :=) を利用して内包表記におけるサブ書式の重複を回避しよう!
Published 2020年6月26日16:57 by mootaro23
内包表記内の複数の箇所で同じ計算結果を参照したい、ということはよくあることです。
例えば、文房具を扱う会社の受注プログラムを作成するとします。
注文がきた時点で、発送可能な出荷単位以上の在庫があるかどうかを確認し、顧客に表示できるようにしましょう。
# 在庫
stock = {
'stapler': 99,
'notebook': 252,
…
【 Effective Python, 2nd Edition 】内包表記に含める for 文や if 文の数は2つ位までに抑えておかないと読解性が極端に悪くなりますよ、という話
Published 2020年6月25日19:11 by mootaro23
内包表記 (comprehension) には複数の for 文を含めることができます。
例えば、for ステートメントを2つ含んだリスト内包表記で matrix をフラットなリストに変換しようと思います。
同じレベルで並んでいる for 文は左から右へと処理されます。
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat…
【 Effective Python, 2nd Edition 】再帰関数の実行順序をトレースするデコレータを実装しよう - デバック用途にも重宝します!
Published 2020年6月24日21:04 by mootaro23
今回もデコレータに関連する話題ですが、デコレータの詳細については 前回 取り上げましたので、
今回は復習も兼ねながらちょっと面白いプログラムをご紹介します。
このプログラムは、再帰関数 (recursive function) のネスト呼び出し時における実行過程を、各時点の引数と返却値と共に表示するものです。
fibonacci(4) を実行した際の表示は次のようになります…
【Python 雑談・雑学】 デコレータ (decorators) を理解しよう - デコレータ、オリジナル関数からの引数の渡し方、受け取り方
Published 2020年6月23日21:27 by mootaro23
デコレーター (decorators) は関数を引数として受け取り、他の関数に置き換えた上で、最終的にオリジナルの関数を実行します。
他の関数に置き換えることで、オリジナルの関数の機能を補完、変更することが可能になります。
簡単な実装方法からよりジェネリックで現実的な実装方法までを段階を追って見ていきましょう。
ユーザーが admin パーミッションを持っていれば admi…