【Python入門】reduce()を使いシーケンスの個々の要素に同じ関数を適用する,Python3

reduce()関数はシーケンスの個々の要素に同じ関数を適用することに使うことができます。

reduce()はfunctoolsというモジュールにあるfromとimportによる明示が必要です。

reduce()が簡単にどんなことをするか見てみましょう。

>>> from functools import reduce #必須です
>>> reduce((lambda x, y: x + y), [1, 2, 3, 4, 5])
15

#1+2=3 3+3=6 6+4=10 10+5=15 結果的には1+2+3+4+5の結果となっている

上の例では、まずシーケンスの0番目と1番目の要素を引数として足し合わせて(1+2)、次にその結果できた値(3)と2番目の要素(3)を引数として足し合わせて...というような繰り返しをしています。

これはreduce()関数を使うことなく表現することもできます。

>>> list = [1, 2, 3, 4, 5]
>>> result = list[0]
>>> for x in list[1:]:
...     result = result + x
... 
>>> result
15

あるリストやあるタプルがあって、それに同じような処理をして結果を出したいと思った時に、
for文を使うよりもreduce()を使ったほうがプログラムがシンプルに収まることがあります。

そして、プログラムを考える上で「関数」という単位を扱うと、組み立てが非常に気持ち良いです。

reduce()関数はいわゆる「関数プログラミング」にとても役立つので、使う場面が出てきたら積極的に導入を考えてみましょう!