【Python実践編】ビルトイン関数を組み合わせて賢くコードを書く方法

python入門

はじめに

Pythonのビルトイン関数は、初心者から上級者まで幅広く使われています。
例えば printlen は誰もが知っていますが、複数のビルトイン関数を組み合わせると「Pythonらしい書き方」ができることをご存じでしょうか?

この記事では、よく使われるビルトイン関数を組み合わせて 処理を簡潔に、かつ読みやすくする方法 を解説します。


1. map × filter:条件を満たす要素を加工する

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 偶数だけを2乗する
result = list(map(lambda x: x**2, filter(lambda x: x % 2 == 0, numbers)))
print(result)  # [4, 16, 36, 64]
Python

解説

  • filter で「偶数だけ」に絞り込み
  • map で「2乗」に変換

このように「絞り込み → 加工」の流れをワンライナーで書けます。
for 文でも同じことは可能ですが、mapfilter を組み合わせると「どんな処理をしたいのか」が一目で伝わります。

👉 データ分析や前処理で「特定条件のデータを変換する」場面によく使えます。


2. zip × dict:リストを辞書に変換する

keys = ["name", "age", "country"]
values = ["Alice", 25, "Japan"]

person = dict(zip(keys, values))
print(person)  # {'name': 'Alice', 'age': 25, 'country': 'Japan'}
Python

解説

  • zip は「2つのリストをペアにする」関数
  • その結果を dict に渡すと辞書が生成できる

このパターンは「列データをキー・値のペアにまとめる」ときに便利です。
例えば、CSVから読み込んだデータやAPIのレスポンス整理に使えます。

👉 for 文で for k, v in zip(keys, values) と回して代入するよりも、1行で辞書にできるので効率的です。


3. sorted × lambda:柔軟なソート処理

students = [
    {"name": "Alice", "score": 80},
    {"name": "Bob", "score": 92},
    {"name": "Charlie", "score": 75}
]

# スコア順にソート
ranked = sorted(students, key=lambda x: x["score"], reverse=True)
print(ranked)
Python

解説

  • sorted はリストを並び替える関数
  • key 引数lambda を渡すことで「どの基準で並べ替えるか」を指定可能
  • reverse=True で降順に切り替えられる

👉 この方法はランキングや順位付けの処理でよく使われます。
複雑な基準でも lambda を工夫すれば簡単に対応できます。


4. all × any:一括条件チェック

marks = [70, 82, 90, 65]

print(all(m >= 60 for m in marks))  # True (全員合格)
print(any(m >= 90 for m in marks))  # True (90点以上がいる)
Python

解説

  • all → すべての要素が条件を満たしているか?
  • any → 1つでも条件を満たす要素があるか?

ループを使わなくても「リスト全体の評価」が可能になります。
複数条件を一度に評価したいときに非常に便利です。

👉 例えば「全員が閾値を超えているか」「1人でも合格者がいるか」といった判定でよく使われます。


まとめ

本記事で紹介した応用テクニックは以下の通りです:

  • map × filter : データの加工と条件抽出をまとめて表現できる
  • zip × dict : 複数リストをまとめて辞書化できる
  • sorted × lambda : 複雑な並び替えもシンプルに書ける
  • all / any : 集合的な条件判定を一行で書ける

次のステップ

さらに発展させるには、リスト内包表記ジェネレータ式を組み合わせると「よりPythonicな」書き方が可能です。
例えば map + filter を内包表記にすると、読みやすさを優先できます。

# 偶数だけ2乗(内包表記版)
result = [x**2 for x in numbers if x % 2 == 0]
Python

どちらを使うかは「可読性」と「処理の意図が伝わりやすいか」で選ぶのが良いでしょう。


関連記事

コメント

タイトルとURLをコピーしました