Maison > développement back-end > Tutoriel Python > Comment puis-je trouver efficacement toutes les permutations d'une chaîne en Python, surtout si je dois éviter les doublons ?

Comment puis-je trouver efficacement toutes les permutations d'une chaîne en Python, surtout si je dois éviter les doublons ?

Linda Hamilton
Libérer: 2024-10-27 08:16:03
original
1066 Les gens l'ont consulté

How can I efficiently find all permutations of a string in Python, especially if I need to avoid duplicates?

Trouver toutes les permutations d'une chaîne donnée en Python [Dupliquer]

En Python, trouver toutes les permutations possibles d'une chaîne donnée pose un défi . Une approche implique une itération dans la liste de caractères, en transposant des paires au hasard pour générer de nouvelles chaînes. Cependant, cette approche a ses limites.

Solution optimale utilisant le module itertools

Une solution plus efficace réside dans le module itertools, qui fournit la méthode permutations(). Cette méthode renvoie des permutations successives d'éléments dans un itérable. Si aucun argument n'est spécifié, la méthode génère par défaut toutes les permutations complètes dans l'ordre lexicographique.

<code class="python">import itertools

x = 'stack'
perms = [''.join(p) for p in permutations(x)]</code>
Copier après la connexion

Ce code produira une liste de chaînes contenant toutes les permutations possibles des caractères dans la « pile », comme suit :

perms = ['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']
Copier après la connexion

Si vous rencontrez des doublons, pensez à utiliser un ensemble pour les éliminer :

<code class="python">x = 'stack'
perms = set([''.join(p) for p in permutations(x)])</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal