Trouver les permutations d'une chaîne avec itertools.permutations()
Lorsque nous sommes confrontés à la génération de toutes les permutations d'une chaîne donnée, il est tentant de recourir aux techniques manuelles impliquant une itération sur les caractères et leur échange. Cependant, le module itertools de Python offre une solution élégante grâce à la méthode permutations().
Iteratortools.permutations() accepte un itérable, tel qu'une chaîne, et renvoie des permutations de longueur successives de ses éléments. Par défaut, il génère des permutations complètes, mais vous pouvez spécifier la longueur souhaitée avec le paramètre r.
Pour obtenir toutes les permutations d'une chaîne en Python, utilisez simplement le code suivant :
from itertools import permutations string = 'stack' # Get all permutations as tuples perms = permutations(string) # Convert permutations to strings for readability perms_as_strings = [''.join(p) for p in perms]
Cette approche donne une liste contenant toutes les permutations possibles de la chaîne donnée.
Notez que l'ordre des permutations dans la liste est lexicographique. Cela signifie que si votre chaîne est triée, les chaînes permutées seront également triées.
Gestion des doublons
Si votre chaîne contient des caractères en double, la méthode permutations() le fera générer également des doublons. Pour éliminer les doublons, vous pouvez convertir votre liste de permutations en un ensemble :
perms_as_strings = set(perms_as_strings)
Cet ensemble ne contiendra désormais que des permutations uniques. Cependant, il est important de noter que l'ordre des éléments est perdu lors de la conversion en ensemble.
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!