Python の filter()メソッドと Lambda 関数
多くの場合、配列、リスト、タプルなどの反復可能なデータ構造を操作する場合、それらに対してフィルタリング操作を実行する必要があります。
フィルタリングとは、特定の条件に一致する値を取り出すことです。for
ループまたは while
ループを使用して反復可能なデータ構造の値と値を反復処理し、要素が条件を満たしているかどうかを確認することで、フィルタリングを実行できます。
これは一般的なタスクであるため、Python プログラミング言語には filter()
というメソッドが組み込まれています。この方法では、ろ過を行う機能が必要です。
一般に、lambda
メソッドは記述が簡単であるため、このジョブで考慮されます。この記事では、Python で filter()
メソッドと lambda
関数を一緒に使用する方法を説明します。
Python の filter()
メソッドと lambda
関数
filter
メソッドは、特定の条件を満たす反復可能オブジェクトから要素をフィルター処理するために使用される Python プログラミング言語の組み込みメソッドです。関数は条件を表し、関数が True
を返す値が結果で考慮されます。
filter()
は 2つのパラメーターを受け入れます。ブール値と、リストやタプルなどの反復可能なオブジェクトを返すフィルタリング用の関数。filter()
メソッドはイテレータまたは filter オブジェクト
です。
list()
メソッドまたは tuple()
メソッドを使用して、イテレータをリストまたはタプルに変換する必要があります。lambda
関数は Python のインライン関数と無名関数です。
これらの関数は、filter
メソッドと一緒に使用できます。
lambda
関数の構文は次のとおりです。
lambda < parameters > : < expression >
パラメータはコンマで区切る必要があり、式はブール結果(True
または False
)を返す必要があります。
簡単な例を使って、この 2つを一緒に使用する方法を理解しましょう。同じことについては、次の Python コードを参照してください。
array = [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
new_array = list(filter(lambda x: x <= 20, array))
print("Old Array:", array)
print("New Array:", new_array)
出力:
Old Array: [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
New Array: [11, 13, 4, 15, 7, 8, 10]
上記の Python コードは、20
以下の整数のリスト array
からすべての値をフィルタリングします。
リストの各値は lambda
関数に渡されます。True
を返す場合、値が結果に追加されます。そうでなければ、そうではありません。
イテレータで結果が取得されると、組み込みの list()
メソッドを使用してリストに変換されます。最後に、両方のアレイがコンソールに出力されます。
例
以下は、filter()
メソッドと lambda
関数の使用法を理解するためのいくつかの例です。
整数のリストからすべての偶数をフィルタリングする
array = [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
new_array = list(filter(lambda x: x % 2 == 0, array))
print("Old Array:", array)
print("New Array:", new_array)
出力:
Old Array: [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
New Array: [2, 4, 66, 88, 100]
整数のリストからすべての奇数をフィルタリングする
array = [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
new_array = list(filter(lambda x: x % 2 == 1, array))
print("Old Array:", array)
print("New Array:", new_array)
出力:
Old Array: [1, 2, 3, 4, 5, 66, 77, 88, 99, 100]
New Array: [1, 3, 5, 77, 99]
文字列のリストから長さ 5 のすべての文字列をフィルタリングする
array = [
"hello",
"python",
"world",
"walking",
"sleep",
"shelter",
"food",
]
new_array = list(filter(lambda x: len(x) == 5, array))
print("Old Array:", array)
print("New Array:", new_array)
出力:
Old Array: ['hello', 'python', 'world', 'walking', 'sleep', 'shelter', 'food']
New Array: ['hello', 'world', 'sleep']
整数のリストから [10, 20]
の範囲内のすべての数値をフィルタリングする
array = [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
new_array = list(filter(lambda x: 10 <= x <= 20, array))
print("Old Array:", array)
print("New Array:", new_array)
出力:
Old Array: [11, 23, 13, 4, 15, 66, 7, 8, 99, 10]
New Array: [11, 13, 15, 10]
関連記事 - Python Function
- Python で関数を終了する
- Python のオプション引数
- Python Functools 部分関数
- Python ジェネレーターの Send 関数
- Python でステップ関数をあてはめる
- Python のファースト クラス関数