Python でループを使用すると非常に時間がかかることはわかっていますが、同じような状況に陥った場合はどうすればよいでしょうか?
![不要在 Python 中使用循环,这些方法其实更棒!](https://img.php.cn/upload/article/000/000/164/168249300935649.jpg)
#この記事では、Python ループの置き換えに使用できるメソッドと例を紹介します。
#ラムダ関数に詳しくない場合は、上記の関数の使用を開始する前に、簡単に見てみましょう。
Lambda 関数は、通常の関数の代替です。これは 1 行のコードで定義できるため、コード内で占める時間とスペースが少なくなります。たとえば、以下のコードでは、ラムダ関数が動作していることがわかります。
def multiply_by_2(x):
x*2
ログイン後にコピー
lambda function
注: 通常の関数の代わりに lambda 関数を使用することをお勧めします。
1. Map
map 関数を使用すると、反復可能なオブジェクト (リスト、タプルなど) の各値に関数を適用できます。
map(function, iterable)
ログイン後にコピー
リスト (反復可能なオブジェクト) 内の平方数を取得したいとします。まず、数値の 2 乗を求める square() 関数を作成します。
def square(x):
return x*x
ログイン後にコピー
次に、map 関数を使用して、数値の入力リストに square() 関数を適用します。
input_list = [2, 3, 4, 5, 6]
# Without lambda
result = map(square, input_list)
# Using lambda function
result = map(lambda x: x*x, input_list)
# converting the numbers into a list
list(result)
# Output: [4, 9, 16, 25, 36]
ログイン後にコピー
2. Filter
直感的には、フィルター関数は反復可能なオブジェクト (リスト、タプル、セットなど) から値をフィルターで除外するために使用されます。フィルター条件は、フィルター関数にパラメーターとして渡される関数内で設定されます。
filter(function, iterable)
ログイン後にコピー
フィルター関数を使用して、10 未満の値をフィルターします。
def less_than_10(x):
if x < 10:
return x
ログイン後にコピー
次に、Filter 関数を使用して、less_than_10() 関数を値のリストに適用します。
input_list = [2, 3, 4, 5, 10, 12, 14]
# Without lambda
list(filter(less_than_10, input_list))
# using lambda function
list(filter(lambda x: x < 10, input_list))
# Output: [2, 3, 4, 5]
ログイン後にコピー
3. Reduce
Reduce 関数は、map 関数や filter 関数とは少し異なります。これは反復可能オブジェクトのすべての値に反復的に適用され、値を 1 つだけ返します。
次の例では、加算関数を適用して数値のリストを削減します。最終的な出力は、リスト内のすべての数値の合計である 15 になります。
2 つの入力数値を加算する add() 関数を作成しましょう。 ![不要在 Python 中使用循环,这些方法其实更棒!](https://img.php.cn/upload/article/000/000/164/168249301041990.jpg)
def addition(x,y):
return x + y
ログイン後にコピー
次に、リスト内のすべての数値の合計を取得するために、この加算関数をreduce関数の引数として適用します。
rreeee
以上がPython プログラミング: ループを回避する優れた方法!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。