2010-09-18 9 views
1

J'essaie de comparer toutes les combinaisons de valeurs dans N listes. Chaque liste est identique aux valeurs 1 à 9 dans l'ordre. J'ai beaucoup de mal à comprendre comment coder cela car je ne peux pas créer de N boucles imbriquées à l'avance. N est défini par l'utilisateur et ne sera pas connu avant l'exécution. L'endroit où je suis toujours bloqué est d'essayer de parcourir toutes les combinaisons possibles de valeurs dans un nombre arbitraire de listes en utilisant un nombre fixe de boucles.Essayer de trouver toutes les combinaisons de valeurs dans les listes N

Des suggestions? J'essaye depuis une heure de comprendre cela. Je suis sûr que c'est quelque chose de simple qui me manque.

+0

Si vous voulez dire « comment puis-je calculer le produit cartésien », j'ai posé une question avant, sur la façon de le faire de manière itérative: http://stackoverflow.com/questions/2419370/how-can- je-calcule-un-cartésien-produit-itérativement. Cependant, une solution plus simple consiste à utiliser la récursivité, et la meilleure consiste à utiliser la fonction product() du module itertools. –

+0

Vérifiez également cette question: http://stackoverflow.com/questions/533905/get-the-cartesian-product-of-a-series-of-lists-in-python –

+0

Ah, je ne savais pas faire cela avait un prénom. Merci à vous deux pour les liens. Je vais chercher plus attentivement avant de poster la prochaine fois. – Andrew

Répondre

5
import itertools 
for combo in itertools.product(xrange(1, 10), repeat=N): 
    ... 
+0

Vous, monsieur, êtes génial. – Andrew

Questions connexes