コース一覧
    Python内包表記・高階関数
    map

    Python内包表記・高階関数

    内包表記と高階関数を学び、データ変換を簡潔かつ意図どおりに表現できるようにします。

    1
    内包表記
    01. リスト内包表記と条件15分
    02. if-else付き内包表記15分
    03. 辞書内包表記15分
    04. set内包表記15分
    05. ジェネレータ式15分
    06. つくる 集計のリファクタ20分
    07. 第3章クイズ10分
    2
    高階関数
    01. 関数はオブジェクト15分
    02. map15分
    03. filter15分
    04. sortedとkeyの応用15分
    05. reduce15分
    06. anyとall15分
    07. つくる 抽出・変換パイプライン20分
    08. 第4章クイズ10分

    map

    このレッスンでできるようになること。map を使って、支出リストの全要素を同じルールで別の値へ変換できるようになります。

    map(関数, リスト) は、リストの要素を1つずつ関数に渡し、その戻り値を順に取り出せるものを返します。前のレッスンで見たとおり、渡すのは関数オブジェクトなのでカッコは付けません。

    Python

    amounts = [220, 640, 1280]
    print(list(map(str, amounts)))   # ['220', '640', '1280']

    ここで大事なのは list() です。map が返すのは map オブジェクトという「これから順に作る」入れ物で、そのまま print すると map object at 0x... のような素っ気ない表示になります。結果をリストとして扱いたいときは必ず list() に通してください。しかも map オブジェクトは一度使い切ると空になるため、二度目のループでは何も出てきません。早めに list へ固めるのが安全です。

    短い変換なら、その場で名前の無い関数を書ける lambda が便利です。lambda 引数: 式 と書くと、式の値を返す関数オブジェクトになります。

    Python

    amounts = [220, 640, 1280]
    taxed = list(map(lambda a: a * 110 // 100, amounts))
    print(taxed)   # [242, 704, 1408]

    税込金額は a * 1.1 でも計算できますが、そうすると 242.00000000000003 のような値が出ることがあります。家計簿の金額は円単位の整数で持ちたいので、110 を掛けてから 100 で整数除算する a * 110 // 100 の形にします。金額は int のまま扱う、と決めておくと表示も比較も揺れません。

    要件

    1. map と lambda を使って変換する
    2. 税込金額は amount * 110 // 100 で計算し、int のまま返す
    3. map オブジェクトではなく list を返す

    ヒント

    list(map(lambda e: ..., expenses)) の形になります

    1件の支出は辞書なので、金額は e["amount"] で取り出します

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

    関連レッスン

    • filter

      filter で 1000 円以上の支出だけを残します。

    • sortedとkeyの応用

      key にタプルを返して、カテゴリ順かつ金額降順に並べます。

    • reduce

      functools.reduce で畳み込み集計を書き、sum と比べます。

    • anyとall

      any と all で、予算超過が1件でもあるかを判定します。

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

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

    • リスト順序付きで複数の値を扱うデータ構造
    • 関数処理に名前を付けて再利用できる単位
    • 戻り値呼び出し元への返答を表す点線矢印
    • オブジェクトキーと値のペアで構造を作るデータ
    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • lambda名前のない小さな関数を1行で定義する記法。
    main.py
    エディタを読み込んでいます

    メモ

    map

    ⌘S で保存