Pythonの関数のマッピング、フィルタリング、削減:知っておくべきことすべて



Pythonのmap()、filter()、reduce()関数とは何かを学びましょう。また、ラムダ関数とユーザー定義関数を使用して、それらを相互に使用する方法も知っています。

Pythonには、事前定義された多くの組み込み関数が用意されており、エンドユーザーはそれらを呼び出すだけで使用できます。これらの関数は、プログラマーの作業を容易にするだけでなく、標準のコーディング環境を作成します。この記事では、このような3つの印象的な関数、つまりmap()、filter、reduce()について学習します。 。

先に進む前に、内容を見てみましょう。





それでは始めましょう。 :)

Pythonのmap()、filter()、reduce()関数とは何ですか?

前述のように、map()、filter()、reduce()が組み込まれています Pythonの。これらの関数は、関数型プログラミングの側面を可能にします 。関数型プログラミングでは、渡される引数が出力を決定する唯一の要因です。これらの関数は、他の関数をパラメーターとして受け取ることができ、他の関数にパラメーターとして提供することもできます。それでは、これらの各機能について詳しく見ていきましょう。



map()関数:

map()関数は高階の一種です。前述のように、この関数は、イテラブルのシーケンスとともに別の関数をパラメーターとして受け取り、シーケンス内に存在する各イテラブルに関数を適用した後に出力を返します。その構文は次のとおりです。

構文:

map(関数、反復可能)



ここで、関数は、イテラブルに適用される式を定義します。 map関数は、ユーザー定義関数だけでなく、 ラムダ関数 パラメータとして。

以下の範囲内でユーザー定義関数とLambda関数を使用する:

map()内のユーザー定義関数:

map()関数は、ユーザー定義関数をパラメーターとして受け取ることができます。これらの関数のパラメーターは、ユーザーまたはプログラマーによって排他的に設定されます。例えば:

例:

def newfunc(a):return a * a x = map(newfunc、(1,2,3,4))#xはマップオブジェクトですprint(x)print(set(x))

出力:

{16、1、4、9}

例を含むJavaのアダプタクラス

ご覧のとおり、xはマップオブジェクトです。次の部分の出力には、newfunc()をパラメーターとして使用するマップ関数が表示され、すべての反復可能オブジェクトにa * aが適用されます。その結果、すべての反復可能値の値がそれ自体で乗算されて返されます。

注意: set()関数を使用したため、出力はiterablesの値の順序ではありません。次に、list()関数またはtuple()関数を使用することもできます。

例:

def newfunc(a):return a * a x = map(newfunc、(1,2,3,4))#xはマップオブジェクトですprint(x)print(list(x))

出力:

[1、4、9、16]

パラメータの複数のリストを渡すこともできます。例えば:

例:

def func(a、b):return a + b a = map(func、[2、4、5]、[1,2,3])print(a)print(tuple(a))

出力:

(3、6、8)

では、どのように使用できるか見てみましょう ラムダ関数 map()関数内。

map()内のLambda関数:

ラムダ関数は、任意の名前を持つ関数です。これらの関数は、多くの場合、他の関数へのパラメーターとして提供されます。それでは、map()関数内にラムダ関数を埋め込んでみましょう。次の例を考えてみましょう。

例:

tup =(5、7、22、97、54、62、77、23、73、61)newtuple = tuple(map(lambda x:x + 3、tup))print(newtuple)

出力:

(8、10、25、100、57、65、80、26、76、64)

上記の出力は、タプルに存在する各アイテムにラムダ式(x + 3)を適用した結果です。

filter()関数:

filter()関数は、関数がtrueを返す値で構成される出力リストを作成するために使用されます。構文は次のとおりです。

構文:

filter(関数、反復可能)

map()と同様に、この関数を使用して、ラムダ関数だけでなくユーザー定義関数もパラメーターとして受け取ることができます。

例:

def func(x):if x> = 3:return x y = filter(func、(1,2,3,4))print(y)print(list(y))

出力:

[3. 4]

ご覧のとおり、yはフィルターオブジェクトであり、リストは条件(x> = 3)に当てはまる値のリストです。

filter()内でラムダを使用する:


パラメータとして使用されるラムダ関数は、実際にチェックされる条件を定義します。例えば:

例:

y =フィルター(ラムダx:(x> = 3)、(1,2,3,4))print(list(y))

出力: [3. 4]

javaideとは

上記のコードは、前の関数と同じ出力を生成します。

reduce()関数:

reduce()関数は、その名前が示すように、指定された関数をiterableに適用し、単一の値を返します。

reduce-map reduce filter-edureka

この関数の構文は次のとおりです。

構文:

reduce(関数、反復可能)

ここでの関数は、イテラブルに適用する必要のある式を定義します。この関数はfunctoolsからインポートする必要があります モジュール 。例えば:

例:

Pythonのクラスとオブジェクトの例
functoolsからimportreduce reduce(lambda a、b:a + b、[23,21,45,98])

出力: 187

上記の例では、reduce関数は、リストに存在する各反復可能オブジェクトを連続して追加し、単一の出力を返します。

Pythonのmap()、filter()、reduce()関数は互いに一緒に使用できます。

map()、filter()およびreduce()関数を互いに一緒に使用する:

これを行うと、最初に内部関数が解決され、次に外部関数が内部関数の出力を操作します。

まず、filter()関数をパラメーターとしてmap()関数に渡してみましょう。

map()内でfilter()を使用する:

以下に示すコードは、最初に条件(x> = 3)が反復可能オブジェクトに対して真であることを確認します。次に、map()関数を使用して出力がマップされます。

例:

c = map(lambda x:x + x、filter(lambda x:(x> = 3)、(1,2,3,4)))print(list(c))

出力: [6、8]

指定されたタプルから3以上の整数を除外すると、結果として[3,4]が得られます。次に、(x + x)条件を使用してこれをマップすると、[6,8]が出力されます。

filter()内でmap()を使用する:


filter()関数内でmap()関数を使用する場合、反復可能オブジェクトは最初にmap関数によって操作され、次にfilter()の条件が適用されます。

例:

c = filter(lambda x:(x> = 3)、map(lambda x:x + x、(1,2,3,4)))#lambda x:(x> = 3)print(list(c) )

出力: [4、6、8]

reduce()内でmap()とfilter()を使用する:

内部関数の出力は、reduce()関数に指定された条件に従って削減されます。

例:

d = reduce(lambda x、y:x + y、map(lambda x:x + x、filter(lambda x:(x> = 3)、(1,2,3,4))))print(d)

出力: 14

出力は、内部map()およびfilter()関数の結果である[6,8]の結果です。

これで、Pythonのmap()、filter()、reduce関数に関するこの記事の終わりに到達しました。あなたがすべてをはっきりと理解したことを願っています。 できるだけ練習し、経験を元に戻してください。

質問がありますか?この「Pythonのmap()、filter()、reduce()関数」ブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。

Pythonとそのさまざまなアプリケーションに関する詳細な知識を得るには、ライブに登録できます。 24時間年中無休のサポートと生涯アクセス。