J'essaie d'afficher toutes les permutations possibles d'une liste de chiffres, par exemple si j'ai 334, je veux obtenir: J'ai besoin de pouvoir le faire pour tout Ensemble de chiffres jusqu'à environ 12 chiffres de longs. P> Je suis sûr que c'est probablement assez simple en utilisant quelque chose comme itoTools.combinations, mais je ne peux pas vraiment obtenir la syntaxe droite. P> TIA
Sam p> p>
4 Réponses :
Vous voulez des permutations, pas des combinaisons. Voir: Comment générer toutes les permutations d'une liste dans Python Notez qu'il permute les deux 3 (qui est la bonne chose à faire mathématiquement), mais n'est pas la même que votre exemple. Cela ne fera une différence que s'il existe des nombres dupliqués dans votre liste. P> p>
>>> lst = [3, 3, 4] >>> import itertools >>> set(itertools.permutations(lst)) {(3, 4, 3), (3, 3, 4), (4, 3, 3)}
+1, des permutations distinctes d'une liste. SET (LISTE ()) CODE> à la sauvetage à nouveau.
@Seth il suffit d'utiliser itTools.combinations code> à la place.
@nbro - Les combinaisons et les permutations sont des opérations différentes (mais liées). Dans ce cas, iTERTools.combinations ([3, 3, 4], 3) code> donnerait simplement l'ensemble d'origine, et non la liste des arrangements des nombres dans l'ensemble (c.-à-d. Le permutations ).
sans itTools sortie p>
Suivait cette approche mais ne pouvait pas comprendre ce que ces deux boucles font réellement. Pouvez-vous trouver un peu de texte à la réponse?
J'utiliserais Exemple: iTertools code>, mais si vous avez eu à implémenter cela vous-même, voici le code qui renvoie toutes les permutations d'une taille spécifiée pour une liste de valeurs.
valeurs = [1,2,3] code>,
taille = 2 code> =>
[[3, 2], [2, 3], [2, 1], [3 , 1], [1, 3], [1, 2]] code> p>
C'est une réponse cool, j'ai aimé, mais cela pourrait être bon si les valeurs soutiennent également zéro. Ex: valeurs = [0,1,2] Cette logique échoue. :)