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