カテゴリ: Python 更新日: 2025/09/20

Pythonの関数型プログラミング入門!map, filter, reduce の活用方法

Pythonの関数型プログラミング入門!map, filter, reduce の活用方法
Pythonの関数型プログラミング入門!map, filter, reduce の活用方法

先生と生徒の会話形式で理解しよう

生徒

「Pythonでデータをまとめて変換したり、条件で絞り込みたいときって、どうやるんですか?」

先生

「そんなときに便利なのがmapfilterreduceという関数型プログラミングの機能です。」

生徒

「関数型プログラミングって難しそうですが、初心者でも使えますか?」

先生

「はい、大丈夫です!考え方を覚えれば、リストのループ処理を短く、しかも読みやすく書けますよ。」

-

1. 関数型プログラミングとは?

1. 関数型プログラミングとは?
1. 関数型プログラミングとは?

関数型プログラミングとは、関数を第一級オブジェクトとして扱うプログラミング手法です。Pythonでは、関数を変数のように渡したり、関数の戻り値として返したりできます。

今回紹介するmapfilterreduceは、データの変換・絞り込み・集約をシンプルに書くための便利な関数です。

2. map関数でデータを一括変換

2. map関数でデータを一括変換
2. map関数でデータを一括変換

map関数は、指定した関数をリストやタプルの全要素に適用します。


numbers = [1, 2, 3, 4, 5]

# 各要素を2倍にする
doubled = list(map(lambda x: x * 2, numbers))
print(doubled)

[2, 4, 6, 8, 10]

上の例では、lambda(無名関数)を使って短く書いています。for文でもできますが、mapを使えばコード量が減り、意図が明確になります。

3. filter関数で条件に合うデータを抽出

3. filter関数で条件に合うデータを抽出
3. filter関数で条件に合うデータを抽出

filter関数は、条件を満たす要素だけを取り出します。


numbers = [10, 15, 20, 25, 30]

# 偶数だけを抽出
evens = list(filter(lambda x: x % 2 == 0, numbers))
print(evens)

[10, 20, 30]

条件に合うかどうかはTrueFalseで判断します。データのフィルタリング(絞り込み)に最適です。

4. reduce関数でデータを集約

4. reduce関数でデータを集約
4. reduce関数でデータを集約

reduce関数は、リストの全要素を1つの値にまとめます。Pythonの標準ライブラリfunctoolsからインポートして使います。


from functools import reduce

numbers = [1, 2, 3, 4, 5]

# 合計を計算
total = reduce(lambda x, y: x + y, numbers)
print(total)

15

加算だけでなく、掛け算や最大値・最小値の計算など、さまざまな集約処理に応用できます。

-

5. map, filter, reduce の組み合わせ例

5. map, filter, reduce の組み合わせ例
5. map, filter, reduce の組み合わせ例

これらの関数は組み合わせて使うこともできます。


from functools import reduce

numbers = [1, 2, 3, 4, 5, 6]

# 偶数の2乗の合計を求める
result = reduce(
    lambda x, y: x + y,
    map(lambda x: x**2, filter(lambda x: x % 2 == 0, numbers))
)
print(result)

56

まずfilterで偶数を取り出し、次にmapで2乗し、最後にreduceで合計しています。複雑な処理もこのように簡潔に表現できます。

6. 関数型プログラミングのポイント

6. 関数型プログラミングのポイント
6. 関数型プログラミングのポイント
  • mapは「変換」、filterは「抽出」、reduceは「集約」
  • for文よりもコードが短く、意図が明確になる
  • ラムダ式と組み合わせるとさらにスッキリ書ける

Pythonではfor文やリスト内包表記でも同じことができますが、mapfilterreduceを使うと関数型プログラミングのスタイルを身につけられ、より高度なデータ処理ができるようになります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
New2
PHP
PHPのスコープとは?グローバル・ローカル・スーパーグローバルを完全解説!
New3
PHP
PHPの演算子をやさしく解説!算術・比較・論理・ビット演算子の使い方
New4
PHP
PHP の変数とは?基本的な使い方とデータ型を徹底解説!
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.2
Java&Spring記事人気No2
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.4
Java&Spring記事人気No4
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.5
Java&Spring記事人気No5
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.6
Java&Spring記事人気No6
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.7
Java&Spring記事人気No7
PHP
PHP の日付と時間の取得(date, time, strtotime)を完全解説!初心者でもわかる使い方
No.8
Java&Spring記事人気No8
PHP
PHP のデータ型を完全ガイド!初心者でもわかる int, string, float, bool など
-
-