filter(関数またはなし、シーケンス)、シーケンスはリスト、タプル、文字列です。この関数の機能は、要素自体をパラメータとして関数が呼び出されたときに、True または bool (戻り値) を返すシーケンス内のすべての要素をフィルタリングし、それをリストとして返すことです。フィルタは 2 つだけを受け入れることができます。パラメーター (関数、シーケンス) のうち、関数 関数では 1 つの値のみを返すことができます
簡単なコードから始めましょう:
print max(filter(lambda x: 555555 % x == 0, range(100, 999)))
このコードは、最大 3 桁の約数を出力することを意味します番号は555555。
まず第一に、このコードの最初の知識ポイントは、リストをフィルタリングするために使用される Python の組み込み関数 filter
filter() 関数です。最も簡単な方法は、関数を使用してリストをフィルターし、リスト内の各項目をフィルター関数に渡し、フィルター関数が false を返したときにリストから項目を削除することです。
filter() 関数には、関数とリストの 2 つのパラメータが含まれます。つまり、この関数は、関数パラメーターによって返された結果が true であるかどうかに基づいてリスト パラメーター内の項目をフィルター処理し、最終的に新しいリストを返します。
簡単に言えば、filter() 関数は次のコードと同等です:
c = [b for b in a1 if b > 2] print c
2 番目の知識ポイントは lambda() 関数です
Python はこの構文をサポートしており、ユーザーは単一のline minimum function 、ラムダと呼ばれるこれらの関数は Lisp から借用したものです。
def f(x): return x * 2 g = lambda x: x * 2 (lambda x: x * 2)(3)
コードからわかるように、ラムダ関数は通常の関数と同じことを行い、ラムダにはパラメーター リストを囲む括弧がなく、return キーワードが無視されます (return は暗黙的に存在します。関数全体には 1 行しかなく、関数には名前がありませんが、変数に代入して呼び出すことができます)
コードの最後の部分は、ラムダ関数が単なるインライン関数であることを示しています。