カテゴリ: Python 更新日: 2026/02/01

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

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

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

生徒

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

先生

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

生徒

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

先生

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

-

1. 関数型プログラミングとは?初心者でもわかる基礎知識

1. 関数型プログラミングとは?初心者でもわかる基礎知識
1. 関数型プログラミングとは?初心者でもわかる基礎知識

関数型プログラミングとは、一言でいうと「関数(処理のまとまり)を、データと同じように自由に扱う」というプログラミングのスタイルです。2026年現在のモダンな開発現場でも、コードの再利用性や保守性を高める手法として非常に重視されています。

Pythonでは、関数を「第一級オブジェクト」として扱えるのが大きな特徴です。これは、数値や文字列を変数に代入するのと同じ感覚で、関数そのものを変数に入れたり、別の関数へ引数として渡したり、戻り値として受け取ったりできることを意味します。

プログラミング未経験者向けのイメージ:
料理に例えると、これまでのやり方が「具材を切って、炒めて…」という手順書に従うものだとしたら、関数型は「切る機能」や「焼く機能」という道具(関数)そのものを組み合わせて、効率よく料理を完成させるイメージです。

例えば、関数を変数のように扱う簡単な仕組みを見てみましょう。


# 挨拶をするだけのシンプルな関数
def say_hello(name):
    return f"こんにちは、{name}さん!"

# 関数を「message_func」という変数に代入
message_func = say_hello

# 変数経由で関数を呼び出す
print(message_func("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
Python
Pythonの変数スコープとは?初心者でもわかるローカル変数とグローバル変数の違い
New2
Python
PythonのNoneとは?NoneTypeの使い方とnullとの違いをわかりやすく解説
New3
Python
Pythonで文字列の長さを取得する方法!len()の基本と応用
New4
PHP
PHP のインストール方法(Windows・Mac・Linux)と開発環境
-
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPでREST APIを作る方法を完全ガイド!初心者でもわかるAPI開発入門
No.2
Java&Spring記事人気No2
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.3
Java&Spring記事人気No3
Python
Pythonでファイルの更新日やサイズを取得する方法!初心者でもわかるos.stat()の使い方
No.4
Java&Spring記事人気No4
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.5
Java&Spring記事人気No5
PHP
PHP のインストール方法(Windows・Mac・Linux)と開発環境
No.6
Java&Spring記事人気No6
PHP
初心者向けにPHP でファイルを開く・読み込む・書き込む方法(fopen, fwrite, fread)を解説する記事
No.7
Java&Spring記事人気No7
Python
Pythonのコンストラクタ(__init__)の使い方を解説!初心者でもわかるオブジェクトの初期化
No.8
Java&Spring記事人気No8
PHP
PHP の可変変数と変数の参照渡しを完全解説!初心者でも理解できる動的変数の使い方
-
-