##はじめに
未来電子テクノロジーでインターンをしている松井です。
ハッカーランクで高階関数が出てきたため調べました。
*プログラミング初心者であるため、内容に誤りがあるかもしれません。
もし、誤りがあれば修正するのでどんどん指摘してください。
##高階関数とは
@may88seijiさんのJavaScript 高階関数を説明するよに**「関数を引数、戻り値として扱う関数」**とありました。
この言葉が1番わかりやすかったため、引用させてもらいました。
高階関数を使うことで変数や定数だけでなく、関数も引数として使えます。
##高階関数(map, filter, reduce)について
###1.map()
map()
はmap(func, iterator)
の形で使います。
各要素の絶対値を計算する処理を書きます。
numbers = [-8, 5, -1, 4, -9, 2]
print(list(map(abs, numbers)))
#[8, 5, 1, 4, 9, 2]
簡単な処理でないため、あまり役に立っているように見えませんが、
複雑な処理になると、非常に便利だそうです。
###2.filter()
filter()
はリストやタプルの要素の中で関数を適用させた後、
True
となるものだけイテレーターをして返します。
絶対値が3より大きい要素だけ返す処理を書きます。
numbers = [-8, 5, -1, 4, -9, 2]
print(list(filter(lambda x: abs(x) > 3, numbers)))
#[-8, 5, 4, -9]
ここで使った無名関数lambdaはこちらを参照してください。
ここでのlambda
は「絶対値が3より大きいときTrueを返す」関数です。
###3.reduce()
reduce()
はリストやタプルの要素を四則演算する関数です。
全ての要素を足し合わせる処理を書きます。
from operator import add
from functools import reduce
numbers = [-8, 5, -1, 4, -9, 2]
print(reduce(add, numbers))
# -7
add
はpythonの演算子の「+」と同じ処理を行う関数です。
「+」はreduce()
に渡せないため、add
を使いました。
reduce()
はpython3ではimport
で持ってくることが必要です。