Pythonのラムダ式とreduce関数を使った集計処理の例!初心者でもわかるデータ集計の基本
生徒
「Pythonでリストの数字を全部足し合わせたいんですが、どうやったらいいですか?」
先生
「Pythonにはreduceという関数があって、これを使うとリストの要素をまとめて計算したり、集計したりできますよ。」
生徒
「reduce関数?それとラムダ式ってどう関係するんですか?」
先生
「ラムダ式はその場で使える小さな関数です。reduce関数と組み合わせると、足し算や掛け算などの処理を簡単に書けるんです。」
生徒
「なるほど!具体的な使い方を教えてください!」
1. reduce関数とは?
reduce関数は、Pythonのfunctoolsモジュールにある関数で、リストなどのデータを1つずつ順に処理して、最終的に1つの値にまとめるために使います。たとえば、数字の合計や掛け算の結果を求めるときに便利です。
「リストの要素を1つずつ順番に処理して、結果を積み重ねる」とイメージするとわかりやすいです。
2. ラムダ式とは?
前回も紹介しましたが、ラムダ式は「小さな匿名関数(名前のない関数)」のことです。1行で簡単に関数を作れます。
例えば、「2つの数字を足す関数」は普通はこう書きます。
def add(a, b):
return a + b
ラムダ式を使うとこうなります。
lambda a, b: a + b
この「lambda a, b: a + b」が「2つの引数を受け取って、それらを足し算する関数」という意味です。
3. reduce関数とラムダ式を使った合計の計算例
では、リストの数字を全部足し合わせる例を見てみましょう。
from functools import reduce
numbers = [10, 20, 30, 40, 50]
# reduce関数とラムダ式で合計を計算
total = reduce(lambda a, b: a + b, numbers)
print(total)
実行結果はこちらです。
150
ここでは、lambda a, b: a + bが「2つの数字を足す関数」として使われています。reduce関数はリストの最初の2つを足し、次にその結果と3つ目を足し…という具合に、全部の数字を順番に足していきます。
4. 掛け算の例も見てみよう
同じように、リストの数字を全部掛け合わせる例も簡単です。
from functools import reduce
numbers = [1, 2, 3, 4, 5]
# 掛け算をするラムダ式とreduce関数
product = reduce(lambda a, b: a * b, numbers)
print(product)
実行結果はこちらです。
120
掛け算は「1×2×3×4×5」で、結果は120になります。reduce関数がリストの要素を順に掛け合わせてくれます。
5. 初心者にわかりやすい例え:reduceは「たたむ」イメージ
reduceは英語で「畳む」という意味です。たとえば、広げた布を少しずつ畳んでいくように、リストの要素を1つずつまとめて1つの結果にします。
だから、足し算なら全部足し合わせて1つの合計に、掛け算なら全部掛けて1つの積になります。
6. まとめではないですが最後に注意点
reduce関数は便利ですが、慣れないうちは少しわかりにくいかもしれません。無理に使わず、まずはforループで計算する方法も覚えると良いでしょう。
また、ラムダ式は短い関数を作るときに便利ですが、複雑な処理は通常の関数defで書くことをおすすめします。