Python には、filter()、map()、reduce() という 3 つの基本関数があり、それぞれフィルタリング、マッピング、集計関数を提供します。前のセクションでは、filter() 関数を匿名関数と組み合わせて使用しました。以下では、その使用法を詳しく紹介します。
データをフィルター処理するときは、問題を迅速に解決できるように通常、filter() 関数を使用します。その構文形式は次のとおりです。
フィルター(関数、反復可能なオブジェクト)
filter 関数では、フィルタリングまたはフィルタリング メソッド、つまり関数名を前に置き、反復可能なオブジェクトを後ろに格納します。次の例を見てみましょう。
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]print(filter(test,my_list))#いくつかの関数名が必要なだけで、パラメータは必要ありません
出力結果:
<フィルターオブジェクトat0x034C2DD8>
この例に関しては、最初に test() 関数を定義します。この関数は、x が偶数の場合にその値を返します。次に、test() 関数を使用して、filter() 関数を通じて my_list リストをフィルタリングしますが、出力結果は < 0x034C2DD8> のフィルター オブジェクト。ここで、 filter() 関数の戻り値は反復可能なオブジェクトであり、値に反復的にアクセスするか、 list() 関数を使用して型変換を強制する必要があることに注意する必要があります。
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]print(filter(test,my_list))foriinfilter(test,my_list):print('反復後のデータ: ',i)print('list() メソッドを使用します:',list(filter(test,my_list)))
出力は次のとおりです。
反復内のデータ: 2 反復内のデータ: 4 反復内のデータ: 6 list() メソッドの使用: [2, 4, 6]
たとえば、複数の値を入力する場合は、map() 関数を使用します。
a,b,c,d=map(int,input().split())print(a,b,c,d)
map() 関数の構文形式は次のとおりです。
map(関数、反復可能なオブジェクト)
map() 関数を使用する場合、主にデータ処理に使用します。反復可能なオブジェクト内のデータは、関数によって処理された後に保存されます。引き続き list() 関数を使用します。
まず、上記の 4 つの値を入力する例を見てみましょう。 Int は関数であり、input().splite によって入力された値は、int 関数によって処理された後にマップ オブジェクトに格納される反復可能なオブジェクトです。
map() 関数を使用すると、関数を通じてシーケンス内のすべてのデータを処理できます。次の例を参照してください。
文字をリストに保存し、小文字が存在する場合は大文字に変換します。
コードは次のとおりです。
deftest(x):ifx.is lower():returnx.upper()else:returnxmy_list=['d','o','t','C','p','P']print(list(map (テスト,my_list)))
出力は次のとおりです。
['D'、'O'、'T'、'C'、'P'、'P']
test()関数はまずxを判定し、小文字であれば大文字を返し、小文字でなければその値を返します。
reduce() 関数は、関数メソッドを通じて反復可能なオブジェクトを集約するために使用されます。
構文形式は次のとおりです。
reduce(関数, 反復可能なオブジェクト[, 初期値])
たとえば、リストが [1,2,3,4] であることがわかっており、リスト内のすべての項目を順番に乗算した合計を求める必要がある場合は、reduce() 関数を使用できます。
fromfunctoolsimportreduce#reduce 関数は functools モジュールで定義されており、導入する必要があります deftest(x,y):returnx*ymy_list=[1,2,3,4]print(reduce(test,my_list))
出力は次のとおりです。
コードの最初の行でこのメソッドが紹介されており、モジュールについては後で説明します。test() 関数は乗算する 2 つのデータを返し、my_list リストはreduce() 関数を通じて処理されます。
処理プロセスは次のとおりです。
まず最初のステップを実行し、結果を取得して次のステップと乗算し、最後の桁に進みます。
これら 3 つの関数のうち最初の 2 つはよく使用されます。これらの 3 つの関数をマスターすると、一連の複雑な問題を解決することができます。次のセクションでは、再帰関数について学習します。