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

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

【 Effective Python, 2nd Edition 】入力元のデータサイズが大きい場合は、リスト内包表記 ( list comprehension ) ではなくジェネレータ式 ( generator expression ) の利用を検討しよう!

Tags: Python , generator , comprehension , Effective

Published 2020年6月30日21:59 by T.Tsuyoshi

リスト内包表記では、入力元シーケンスの各要素に1対1で対応した要素からなる新たなリストインスタンスが作成される場合もあります。 この場合、入力元のデータが非常に大きければメモリ消費もそれに伴って大きくなってしまいます。 例えば、テキストファイルを読み込み、各行に含まれる文字数を取得するリスト内包表記を記述するとしましょう。 最終的には、ファイルの行数文の文字数をセットするためのメモリ領域が必要です。 対象とするファイルが巨大であったり、対象が延々と送られてくるネットワークソケットであったりしたらどうなっちゃうんでしょう? 対象のファイルが小さい場合であれば以下のような実装で問題ないでしょう。 my_file.txt: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in varius dolor. Ut …

【 Effective Python, 2nd Edition 】assignment expression (walrus operator, :=) を利用して内包表記におけるサブ書式の重複を回避しよう!

Tags: Python , comprehension , Effective , assignment , walrus , expression

Published 2020年6月26日16:57 by T.Tsuyoshi

内包表記内の複数の箇所で同じ計算結果を参照したい、ということはよくあることです。 例えば、文房具を扱う会社の受注プログラムを作成するとします。 注文がきた時点で、発送可能な出荷単位以上の在庫があるかどうかを確認し、顧客に表示できるようにしましょう。 # 在庫 stock = { 'stapler': 99, 'notebook': 252, 'marker': 8, 'post-it': 43, } # 各商品の出荷単位 ship_unit …

【 Effective Python, 2nd Edition 】内包表記に含める for 文や if 文の数は2つ位までに抑えておかないと読解性が極端に悪くなりますよ、という話

Tags: Python , comprehension , Effective

Published 2020年6月25日19:11 by T.Tsuyoshi

内包表記 (comprehension) には複数の for 文を含めることができます。 例えば、for ステートメントを2つ含んだリスト内包表記で matrix をフラットなリストに変換しようと思います。 同じレベルで並んでいる for 文は左から右へと処理されます。 matrix = [[1, 2, 3], [4, 5, 6], …

【 Effective Python, 2nd Edition 】dictionary comprehension の使い道

Tags: Python , comprehension , dictionary , unpack , Effective

Published 2020年6月11日7:01 by T.Tsuyoshi

リスト内包表記 (list comprehension) は使う場面も多いけれど、辞書内包表記 (dictionary comprehension) は使ったことがない、という方も多いのでは、 実際、使う場面はほぼほぼないかもしれません。 そこで、辞書内包表記を利用することでコード全体がスッキリする場面、をご紹介。 下記のようなデータ構造を利用しているとします。 users = [ (0, 'Nana', 'password'), (1, 'Saki', '1234'), (2, …

【Python 雑談・雑学】 list comprehension (リスト内包表記) は節度を持って使ってください、という話

Tags: Python , miscellaneous , comprehension , set , list

Published 2020年5月21日20:21 by T.Tsuyoshi

渡されたコードをチェックしていたら、こんな感じの内包表記が含まれていました。 friends = ["Nana", "Saki", "Yuka"] guests = ["Taro", "Nana", "jiro", "saki", "saburo", "shiro", "Hana"] present_friends = [ name.title() for …