Python の Map、Filter、Reduce 関数を理解する
Python には、データ処理タスクを簡素化できる関数型プログラミング ツールがいくつか用意されています。これらの中には、map
、filter
、reduce
関数があります。これらの関数を使用すると、データのコレクションに対して簡潔で読みやすい方法で操作を実行できます。この記事では、これらの各関数について説明し、効果的な使用方法を理解するのに役立つ例を示します。
map
関数
map
関数は、指定された関数を入力リスト (または任意の反復可能オブジェクト) 内のすべての項目に適用し、結果を生成する反復子を返します。これは、コレクション内の各要素に変換を適用する場合に特に便利です。
構文
map(function, iterable)
例
リスト内の各数値を二乗したいとします。これを実現するには、map
を使用します。
# Define a function to square a number
def square(x):
return x * x
# List of numbers
numbers = [1, 2, 3, 4, 5]
# Apply the function to each item in the list
squared_numbers = map(square, numbers)
# Convert the result to a list and print
print(list(squared_numbers)) # Output: [1, 4, 9, 16, 25]
filter
関数
filter
関数は、True
または False
を返す関数に基づいて反復可能オブジェクトから要素をフィルター処理するために使用されます。関数が True
を返す要素のみが結果に含まれます。
構文
filter(function, iterable)
例
たとえば、リストから偶数だけを残したい場合は、filter
を使用できます。
# Define a function to check if a number is even
def is_even(x):
return x % 2 == 0
# List of numbers
numbers = [1, 2, 3, 4, 5]
# Filter the list using the function
even_numbers = filter(is_even, numbers)
# Convert the result to a list and print
print(list(even_numbers)) # Output: [2, 4]
reduce
関数
functools
モジュールの一部である reduce
関数は、反復可能オブジェクトの項目にバイナリ関数を左から右へ累積的に適用し、反復可能オブジェクトを単一の値に減らします。
構文
from functools import reduce
reduce(function, iterable[, initializer])
例
たとえば、リスト内のすべての数値の積を求めるには、reduce
を使用します。
from functools import reduce
# Define a function to multiply two numbers
def multiply(x, y):
return x * y
# List of numbers
numbers = [1, 2, 3, 4, 5]
# Reduce the list using the function
product = reduce(multiply, numbers)
# Print the result
print(product) # Output: 120
結論
map
、filter
、reduce
関数は、Python での関数型プログラミングのための強力なツールです。これらは、変換の適用、データのフィルタリング、コレクションを単一の値に削減するための優れたソリューションを提供します。これらの関数を習得することで、さまざまなデータ処理タスクに対して、より簡潔で表現力豊かなコードを記述できます。