"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso gerar todas as permutações possíveis de uma string em Python, incluindo o tratamento de duplicatas?

Como posso gerar todas as permutações possíveis de uma string em Python, incluindo o tratamento de duplicatas?

Publicado em 2024-11-09
Navegar:374

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

Permutando Strings em Python

Encontrar todas as permutações possíveis de uma determinada string pode ser uma tarefa desafiadora. No entanto, Python fornece uma solução direta usando o módulo itertools.

Solução: itertools.permutations()

O método itertools.permutations() é projetado especificamente para gerar permutações . Ele pega um iterável como entrada e retorna um objeto gerador que itera sobre todas as permutações possíveis do iterável.

No caso de uma string, podemos convertê-la em um iterável usando a função list(). Para obter todas as permutações possíveis da string, usamos o seguinte código:

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

O resultado será uma lista de strings contendo todas as permutações da string original.

Tratamento de duplicatas

Se desejar excluir permutações duplicadas, você pode utilizar um conjunto, pois ele retém apenas elementos únicos.

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

Vantagens de itertools.permutations()

  • Eficiente: o método utiliza um Implementação baseada em C para execução rápida.
  • Abrangente: gera todas as permutações possíveis sem repetir nenhuma.
  • Personalizável: o número de permutações pode ser controlado especificando o parâmetro 'r'.

Saída de exemplo

Para a string 'stack', a lista de saída conterá as seguintes permutações:

['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']
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3