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

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

【Python 雑談・雑学 + coding challenge】Python data structure の1つ、set を活用していますか? 複数のシーケンスの包含関係を調べるには最適です

Tags: Python , miscellaneous , comprehension , set , challenge

Published 2020年8月11日21:03 by T.Tsuyoshi

まずはご自分でコーディングにチャレンジ ( coding challenge ) してみて下さい。 問題 ( 制限時間: 25 分 ): 1 行に 1 つの単語が記述されているテキストファイルを用意します。 こちら のファイルを利用させていただくことも可能です。23 万 5 …

【Python 雑談・雑学 + coding challenge】comprehension は確かに Pythonic ですけど、map 組み込み関数と使い分けることも必要ですね!

Tags: Python , miscellaneous , comprehension , challenge , map

Published 2020年8月9日17:27 by T.Tsuyoshi

さて、まずは次のコードを見て下さい。出力結果はどうなるでしょうか? import operator def stick_to_comprehension(): letters = 'abcd' numbers = range(1, 5) return ' '.join([operator.mul(letter, number) for letter, number in …

【 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], …