Lors de tests répétitifs, l'utilisation de boucles for imbriquées pour parcourir diverses combinaisons de paramètres peut entraîner un code profondément imbriqué. Heureusement, il existe des approches alternatives pour éliminer ou réduire cette imbrication.
Une méthode efficace consiste à utiliser la fonction itertools.product de la bibliothèque standard Python. Cette fonction génère des produits cartésiens de plusieurs itérables, qui peuvent être utilisés pour créer une liste aplatie de toutes les combinaisons possibles.
Considérez l'extrait de code suivant :
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)
Ce code génère efficacement toutes les combinaisons possibles. combinaisons de valeurs des plages spécifiées et les stocke dans une liste aplatie. La boucle for parcourt ensuite cette liste, permettant à la fonction do_something_with d'accéder aux valeurs individuelles.
Une autre approche consiste à utiliser la récursivité. Cependant, cette méthode n’est pas aussi simple dans ce cas précis, car chaque paramètre a sa propre plage et son propre incrément. Par conséquent, l’utilisation de itertools.product est généralement plus efficace et plus simple à mettre en œuvre.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!