LoginSignup
6

More than 3 years have passed since last update.

高階関数(map, filter, reduce)

Posted at

はじめに

未来電子テクノロジーでインターンをしている松井です。
ハッカーランクで高階関数が出てきたため調べました。
*プログラミング初心者であるため、内容に誤りがあるかもしれません。
もし、誤りがあれば修正するのでどんどん指摘してください。

高階関数とは

@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で持ってくることが必要です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6