コース一覧
    Pythonクラス・総合制作
    オブジェクトと内包表記

    Pythonクラス・総合制作

    クラスと総合制作を学び、Pythonの知識を組み合わせた小さなプログラムを完成できるようにします。

    1
    クラス入門
    01. クラス定義15分
    02. __init__とインスタンス変数15分
    03. メソッド15分
    04. __str__15分
    05. クラス変数15分
    06. dataclass15分
    07. オブジェクトと内包表記15分
    08. つくる クラスベース化20分
    09. 第7章クイズ10分
    2
    総合制作
    01. パッケージ構成に整理20分
    02. 月次レポートv220分
    03. 動作チェックスクリプト20分
    04. 自由拡張20分
    05. 完成と次のステップ10分

    オブジェクトと内包表記

    このレッスンでは、第3章で覚えた内包表記をオブジェクトのリストに使い、条件に合う支出だけを取り出せるようになります。

    クラスと内包表記を組み合わせる

    第3章では辞書のリストから条件に合うものを取り出しました。取り出す対象がインスタンスに変わっても、書き方はほとんど同じです。違いは、row["price"] と添字で読んでいたところが expense.price とドットになることだけです。

    Python

    expenses = [
        Expense("牛乳", 158, "食費"),
        Expense("書籍", 1600, "教養"),
    ]
    names = [expense.name for expense in expenses if expense.price >= 500]
    print(names)  # ['書籍']

    for expense in expenses で1件ずつ取り出し、if で残すものを選び、左端の式で取り出す値を決めます。ここでは名前だけを取り出しているので、結果は文字列のリストになります。

    生のデータからインスタンスの列を作る

    CSV や JSON から読んだデータは、リストや辞書の形で手元に来ます。これを内包表記でまとめて Expense に変換しておくと、以降の処理はすべて属性で書けるようになります。

    Python

    rows = [["牛乳", 158, "食費"], ["書籍", 1600, "教養"]]
    expenses = [Expense(name, price, category) for name, price, category in rows]

    for name, price, category in rows は、第2章で覚えたアンパックです。内包表記の中でもそのまま使えます。

    属性を返すか、インスタンスを返すか

    左端の式を expense にすれば、条件に合ったインスタンスそのもののリストが得られます。

    Python

    high = [expense for expense in expenses if expense.price >= 500]

    さらに絞り込みたいときはインスタンスのまま渡し、画面に出したり合計したりするときは属性や数値に変換する、と使い分けます。処理の途中はインスタンス、最後は文字列や数値、と覚えておくと迷いません。

    要件

    1. 内包表記で rows を Expense のリストに変換すること
    2. 内包表記で price が limit 以上のものだけを残すこと
    3. 戻り値は品名の文字列を並べたリストにすること
    4. 元の並び順を変えないこと

    ヒント

    for name, price, category in rows でアンパックできます

    属性は expense.price のようにドットで読みます

    条件は内包表記の末尾に if を付けて書きます

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/07

    関連レッスン

    • つくる クラスベース化

      辞書ベースの処理を全て Expense 前提に書き換えます。

    • 第7章クイズ

      クラスの理解を確認します。

    • パッケージ構成に整理

      models と report に分け、実務で見かける構成に整えます。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 内包表記for と if を 1 行で書く構文
    • オブジェクトキーと値のペアで構造を作るデータ
    • リスト順序付きで複数の値を扱うデータ構造
    • クラスデータと振る舞いを束ねる単位
    • インスタンスクラスから生成された実体
    • applicationJSON 本文を送るときの Content-Type
    • 処理計算や代入を表す長方形
    • 属性インスタンス属性=各インスタンス固有の値(self.name)。
    main.py
    エディタを読み込んでいます

    メモ

    オブジェクトと内包表記

    ⌘S で保存