高階関数の使い方!Pythonでreduceを使う方法【初心者向け】
初心者向けにPythonでreduceを使う方法について解説しています。高階関数reduceを使うと処理を完結に記述することができます。最初にreduceの基本構文をそれぞれの引数の役割も含めて覚え、次に実際の例で動作を確認しましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Pythonでreduceを使う方法について解説します。
そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。
今回は、Pythonに関する内容だね!
どういう内容でしょうか?
reduceの使い方について詳しく説明していくね!
お願いします!
高階関数のreduceとは
関数型言語に慣れている方は、iterableに対して関数を適用したいと思うことがあるかと思います。関数型言語をよく知らない方はfor文などを使用してiterableを処理されるかもしれません。
今回は、関数型言語でよく使用されるreduce(畳み込み)を見ていきましょう。
例えばiterableの要素に対して左から右に累積的に関数を適用し、iterableを単一の値にしてみましょう。
[20, 1, 2, 3, 4, 5] のiterableに対して
加算(+)していき
35を表示する。
減算(-)していき
5を表示する。
乗算(*)していき
2400を表示する。
このような処理をしたい場合、for文と変数を使用して計算する事もできますが、高階関数のreduceを使用すると、とても簡潔に記述することができます。
reduceの使い方
reduceは、
第1引数にfunction(必須) 第2引数にiterable(必須) 第3引数にinitializer(オプション)
を指定できます。
第1引数には2つの引数を取るfunctionを指定する必要があります。
第2引数にはiterableを指定する必要があります。
第3引数にはオプションですが、指定された場合、iterableの先頭に置かれ、iterableが空の場合のデフォルト値になります。また第1引数にはfunctionの代わりにラムダ式を使用する事もできます。
基本構文
reduce(function, iterable, initializer)
またPython3からreduceは組み込み関数からfunctoolsモジュールに移動されたため
from functools import reduce
の宣言が必要です。
実際に書いてみよう
実際にreduceを使用して、Pythonのプログラムを書いてみましょう。
今回のサンプルプログラムでは、functionをadd, sub, mulの場合にはどのような値になるか見ていきましょう。
ソースコード
from functools import reduce from operator import add from operator import sub from operator import mul array = [20, 1, 2, 3, 4, 5] print(reduce(add, array)) # 35 print(reduce(sub, array)) # 5 print(reduce(mul, array)) # 2400
実行結果
# addの場合、20+1+2+3+4+5=35 # subの場合、20-1-2-3-4-5=5 # mulの場合、20*1*2*3*4*5=2400 # となります。 # add, sub, mul functionの代わりにlambda式でも書くことができます。結果は同じです。 print(reduce(lambda a, b: a+b, array)) # 35 print(reduce(lambda a, b: a-b, array)) # 5 print(reduce(lambda a, b: a*b, array)) # 2400
監修してくれたメンター
メンター木下
フルリモート案件をいくつかいただきながら活動しているフリーランスエンジニア。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。