map, filter, reduceの利用 | 高階関数 | Python本格超入門

スポンサーリンク

スポンサーリンク

map, filter, reduceの利用

Pythonには、高階関数と呼ばれる便利な関数があり、関数を他の関数に引数として渡すことができます。その代表的なものが、mapfilter、そしてreduceです。これらの関数を使うことで、リストや他のイテラブルに対して効率的に処理を行うことができます。本記事では、それぞれの関数の使い方を具体例とともに解説します。

map関数

map関数は、イテラブル(リストやタプルなど)の各要素に対して、指定した関数を適用し、その結果を返す関数です。次の例は、リスト内のすべての要素に対して2倍の値を返すmap関数の使用例です。


# map関数の使用例
numbers = [1, 2, 3, 4, 5]
doubled = list(map(lambda x: x * 2, numbers))
print(doubled)  # 出力: [2, 4, 6, 8, 10]
    

このコードでは、lambda関数を使って各要素に2倍の処理を適用しています。map関数は非常にシンプルで効率的な処理を行うために使われます。

filter関数

filter関数は、イテラブルの要素をフィルタリングし、指定した条件に合致する要素だけを返します。次の例では、リストから偶数のみを抽出するfilter関数を使っています。


# filter関数の使用例
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = list(filter(lambda x: x % 2 == 0, numbers))
print(evens)  # 出力: [2, 4, 6, 8, 10]
    

この例では、lambda関数を使って各要素が偶数かどうかを判定し、偶数のみを返しています。

reduce関数

reduce関数は、リストなどのイテラブルの要素を、指定した関数で集約する場合に使われます。reduce関数は、functoolsモジュールからインポートする必要があります。次の例では、リスト内のすべての要素を合計するreduce関数を使用しています。


# reduce関数の使用例
from functools import reduce

numbers = [1, 2, 3, 4, 5]
sum_of_numbers = reduce(lambda x, y: x + y, numbers)
print(sum_of_numbers)  # 出力: 15
    

このコードでは、reduceを使ってリスト内のすべての要素を加算し、結果として15を返しています。reduce関数は、リストの要素を順番に集約する処理を行いたいときに便利です。

map, filter, reduceのまとめ

関数名 説明 使用例
map 各要素に指定した関数を適用する map(lambda x: x * 2, numbers)
filter 条件に一致する要素だけを抽出する filter(lambda x: x % 2 == 0, numbers)
reduce 要素を集約して1つの結果にする reduce(lambda x, y: x + y, numbers)

まとめ

Pythonの高階関数であるmapfilterreduceは、リストやイテラブルに対する処理を効率的に行うための強力なツールです。mapは各要素に対して関数を適用し、filterは条件に合う要素を抽出し、reduceは要素を集約する際に便利です。これらの関数を使いこなすことで、よりシンプルで直感的なコードを書くことができます。