ホームページ  >  記事  >  バックエンド開発  >  Python 3.x で関数プログラミングに functools モジュールを使用する方法

Python 3.x で関数プログラミングに functools モジュールを使用する方法

PHPz
PHPzオリジナル
2023-07-30 16:41:10868ブラウズ

Python 独自の functools モジュールは、関数型プログラミング用のツール関数を多数提供します。コードをより簡潔で読みやすくし、関数プログラミング用の高次関数と基本ツールを提供します。この記事では、functools モジュールのいくつかの一般的な関数を紹介し、コード例を示します。

  1. partialFunction

partial関数は、関数を部分的に適用するために使用されます。つまり、関数の一部のパラメーターを修正します。関数を呼び出して新しい関数を返します。サンプル コードは次のとおりです。

from functools import partial

def multiply(x, y):
    return x * y

double = partial(multiply, 2)
triple = partial(multiply, 3)

print(double(4))  # 输出8
print(triple(4))  # 输出12

上記のコードでは、partial 関数は、multiply 関数の最初のパラメータを 2 または 3 に固定し、新しい値を返します。関数double および tripledouble 関数が呼び出されると、実際には multiply(2, 4) が呼び出され、結果 8 が返されます。

  1. reduce関数

reduce関数は、シーケンス内の要素に対して累積計算を実行し、単一の結果。この関数は、from functools import reduce を介してインポートする必要があります。サンプル コードは次のとおりです。

from functools import reduce

def add(x, y):
    return x + y

numbers = [1, 2, 3, 4, 5]

result = reduce(add, numbers)
print(result)  # 输出15

上記のコードでは、reduce 関数が add 関数をシーケンス numbers## の要素に適用します。 #、左から右へ順番に累積加算し、最終結果の15を返します。

  1. mapFunction

map関数は、シーケンス内の各要素に関数を適用し、新しいシーケンス。サンプル コードは次のとおりです。

def square(x):
    return x ** 2

numbers = [1, 2, 3, 4, 5]

squared_numbers = list(map(square, numbers))
print(squared_numbers)  # 输出[1, 4, 9, 16, 25]

上記のコードでは、

map 関数が square 関数をシーケンス numbers## の各要素に適用します。 # そして新しいシーケンス squared_numbers を返します。

    filter
  1. 関数
filter

この関数は、シーケンス内の各要素に条件判定関数を適用するために使用されます。条件を満たす新しい要素のシーケンスを返します。サンプル コードは次のとおりです。 <pre class='brush:python;toolbar:false;'>def is_even(x): return x % 2 == 0 numbers = [1, 2, 3, 4, 5] even_numbers = list(filter(is_even, numbers)) print(even_numbers) # 输出[2, 4]</pre> 上記のコードでは、

filter

関数が is_even 関数をシーケンス numbers## の各要素に適用します。 # そして、条件を満たす要素のみを含む新しいシーケンス even_numbers を返します。 functools

モジュールが提供する関数を使用すると、より簡潔で読みやすいコードを使用して関数型プログラミングのアイデアを実装できます。上で紹介した

partialreducemapfilter は、functools モジュールでより一般的に使用される関数です。 . 実際のプロジェクトに適用することができます。

以上がPython 3.x で関数プログラミングに functools モジュールを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。