反復テストを実行する場合、ネストされた for ループを使用してさまざまなパラメーターの組み合わせを反復すると、コードが深くネストされる可能性があります。幸いなことに、このネストを排除または削減するための代替アプローチが存在します。
効果的な方法の 1 つは、Python 標準ライブラリの itertools.product 関数を利用することです。この関数は、複数の反復可能オブジェクトのデカルト積を生成します。これを使用して、すべての可能な組み合わせの平坦化されたリストを作成できます。
次のコード スニペットを考えてみましょう。
x1 = range(min1, max1, step1) x2 = range(min2, max2, step2) x3 = range(min3, max3, step3) for v1, v2, v3, v4, v5, v6 in itertools.product(x1, x2, x3, x4, x5, x6): do_something_with(v1, v2, v3, v4, v5, v6)
このコードは、可能なすべての組み合わせを効果的に生成します。指定された範囲の値を組み合わせて、それらをフラット化されたリストに保存します。次に、for ループがこのリストを反復処理して、do_something_with 関数が個々の値にアクセスできるようにします。
もう 1 つのアプローチは、再帰を使用することです。ただし、この特定のケースでは、各パラメータに独自の範囲と増分があるため、この方法はそれほど単純ではありません。したがって、通常は itertools.product を使用する方が効率的で、実装が簡単です。
以上が反復テストで入れ子になった For ループを回避する方法: 代替アプローチの探索の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。