"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo generar todas las permutaciones posibles de una cadena en Python, incluido el manejo de duplicados?

¿Cómo puedo generar todas las permutaciones posibles de una cadena en Python, incluido el manejo de duplicados?

Publicado el 2024-11-09
Navegar:218

How can I generate all possible permutations of a string in Python, including handling duplicates?

Permutar cadenas en Python

Encontrar todas las permutaciones posibles de una cadena determinada puede ser una tarea desafiante. Sin embargo, Python proporciona una solución sencilla utilizando el módulo itertools.

Solución: itertools.permutations()

El método itertools.permutations() está diseñado específicamente para generar permutaciones . Toma un iterable como entrada y devuelve un objeto generador que itera sobre todas las permutaciones posibles del iterable.

En el caso de una cadena, podemos convertirla en un iterable usando la función list(). Para obtener todas las permutaciones posibles de la cadena, utilizamos el siguiente código:

from itertools import permutations
string = 'stack'
perms = [''.join(p) for p in permutations(list(string))]

El resultado será una lista de cadenas que contienen todas las permutaciones de la cadena original.

Manejo de duplicados

Si desea excluir permutaciones duplicadas, puede utilizar un conjunto, ya que solo retiene permutaciones únicas. elementos.

perms = set([''.join(p) for p in permutations(list(string))])

Ventajas de itertools.permutations( )

  • Eficiente: el método utiliza una implementación basada en C para una ejecución rápida.
  • Completo: Genera todas las permutaciones posibles sin repetir ninguna.
  • Personalizable: el número de permutaciones se puede controlar especificando el parámetro 'r'.

Resultado de ejemplo

Para la cadena 'stack', la lista de salida contendrá las siguientes permutaciones:

['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']
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3