Trouver toutes les permutations possibles d'une chaîne donnée en Python
La tâche de générer toutes les permutations possibles d'une chaîne d'entrée donnée a une solution simple en Python. Pour nous lancer dans cette tâche, considérons dans un premier temps la chaîne d'entrée, que nous tenterons de réorganiser. À titre d'illustration, prenons la chaîne 'stack' comme exemple :
x = 'stack'
Notre objectif est de créer des permutations de 'stack' en réorganisant ses caractères.
l=['stack','satck','sackt'.......]
Traditionnellement, on pourrait envisager des approches itératives pour résoudre ce défi, impliquant le sélection aléatoire et transposition de paires de caractères pour générer de nouvelles permutations. Cependant, nous pouvons simplifier notre tâche en utilisant la méthode permutations() fournie par le module itertools. Comme sa documentation le suggère :
itertools.permutations(iterable[, r])
Return successive r length permutations of elements in the iterable.
Utiliser cette méthode dans notre scénario exige que nous adhérions aux considérations suivantes :
Par conséquent, pour obtenir les permutations souhaitées, nous employons l'approche suivante :
from itertools import permutations
perms = [''.join(p) for p in permutations('stack')]
Cette approche donne les permutations suivantes :
['stack', 'stakc', 'stcak', 'stcka', 'stkac', 'stkca', 'satck', 'satkc', 'sactk', 'sackt', 'saktc', 'sakct', 'sctak', 'sctka', 'scatk', 'scakt', 'sckta', 'sckat', 'sktac', 'sktca', 'skatc', 'skact', 'skcta', 'skcat', 'tsack', 'tsakc', 'tscak', 'tscka', 'tskac', 'tskca', 'tasck', 'taskc', 'tacsk', 'tacks', 'taksc', 'takcs', 'tcsak', 'tcska', 'tcask', 'tcaks', 'tcksa', 'tckas', 'tksac', 'tksca', 'tkasc', 'tkacs', 'tkcsa', 'tkcas', 'astck', 'astkc', 'asctk', 'asckt', 'asktc', 'askct', 'atsck', 'atskc', 'atcsk', 'atcks', 'atksc', 'atkcs', 'acstk', 'acskt', 'actsk', 'actks', 'ackst', 'ackts', 'akstc', 'aksct', 'aktsc', 'aktcs', 'akcst', 'akcts', 'cstak', 'cstka', 'csatk', 'csakt', 'cskta', 'cskat', 'ctsak', 'ctska', 'ctask', 'ctaks', 'ctksa', 'ctkas', 'castk', 'caskt', 'catsk', 'catks', 'cakst', 'cakts', 'cksta', 'cksat', 'cktsa', 'cktas', 'ckast', 'ckats', 'kstac', 'kstca', 'ksatc', 'ksact', 'kscta', 'kscat', 'ktsac', 'ktsca', 'ktasc', 'ktacs', 'ktcsa', 'ktcas', 'kastc', 'kasct', 'katsc', 'katcs', 'kacst', 'kacts', 'kcsta', 'kcsat', 'kctsa', 'kctas', 'kcast', 'kcats']
Si nous rencontrons des doublons dans nos permutations, nous pouvons les gérer en restructurant nos données dans un format qui empêche les doublons, comme un ensemble :
perms = [''.join(p) for p in permutations('stacks')]
len(perms) # 720
len(set(perms)) # 360
len(permanentes) # 720
len(set(perms)) # 360 Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3