Pular para o conteúdo

Como Inverter uma String em Python

[

Reverter Strings em Python: reversed(), Slicing e Mais

Quando você está usando strings em Python com frequência no seu código, pode ser necessário trabalhar com elas em ordem reversa. Python oferece algumas ferramentas e técnicas úteis que podem ajudar nessas situações. Com elas, você será capaz de criar cópias reversas de strings existentes de maneira rápida e eficiente.

Conhecer essas ferramentas e técnicas para reverter strings em Python irá melhorar sua habilidade como desenvolvedor Python.

Neste tutorial, você aprenderá como:

  • Construir rapidamente strings reversas através de slicing
  • Criar cópias reversas de strings existentes usando reversed() e .join()
  • Usar iteração e recursão para inverter strings manualmente
  • Realizar iteração reversa sobre suas strings
  • Ordenar suas strings em ordem reversa usando sorted()

Para aproveitar ao máximo este tutorial, você deve conhecer o básico sobre strings, loops for e while, e recursão.

Reverter Strings com Ferramentas Básicas do Python

Trabalhar com strings em Python em ordem reversa pode ser necessário em algumas situações específicas. Por exemplo, digamos que você tenha uma string "ABCDEF" e queira uma maneira rápida de inverter ela para obter "FEDCBA". Quais ferramentas do Python você pode usar para ajudar?

Strings são imutáveis em Python, então inverter uma string existente no local não é possível. Você precisará criar cópias invertidas das suas strings de destino para atender ao requisito.

Python oferece duas maneiras diretas de inverter strings. Como as strings são sequências, elas são indexáveis, fatiáveis e iteráveis. Isso permite que você use o slicing para gerar diretamente uma cópia de uma determinada string em ordem reversa. A segunda opção é usar a função incorporada reversed() para criar um iterador que retorna os caracteres de uma string de entrada em ordem reversa.

Reverter Strings Através do Slicing

O slicing é uma técnica útil que permite extrair itens de uma sequência usando diferentes combinações de índices inteiros, conhecidos como deslocamentos. Esses recursos permitem que você use o slicing estendido para gerar diretamente uma cópia de uma determinada string em ordem reversa. Aqui está um exemplo:

string = "ABCDEF"
reversed_string = string[::-1]
print(reversed_string)

A saída será:

FEDCBA

No exemplo acima, o uso do slicing [::-1] retorna uma nova string contendo todos os caracteres da string original, mas em ordem reversa.

Reverter Strings com reversed() e .join()

A função reversed() retorna um iterador que retorna os caracteres de uma string de entrada em ordem reversa. Para obter uma string reversa, você pode usar esse iterador com a função .join() para unir os caracteres em uma única string. Veja o exemplo:

string = "ABCDEF"
reversed_string = ''.join(reversed(string))
print(reversed_string)

A saída será:

FEDCBA

No exemplo acima, primeiro chamamos reversed(string) para obter um iterador reverso dos caracteres da string. Em seguida, usamos join() para unir os caracteres em uma única string, usando '' (uma string vazia) como separador.

Gerando Strings Invertidas Manualmente

Além das ferramentas básicas do Python, você também pode gerar strings invertidas manualmente, usando técnicas como loops e recursão.

Reverter Strings em um Loop

Uma maneira de gerar strings invertidas é usar um loop para iterar pelos caracteres de uma string e armazená-los em uma nova string na ordem invertida. Veja o exemplo:

string = "ABCDEF"
reversed_string = ""
for char in string:
reversed_string = char + reversed_string
print(reversed_string)

A saída será:

FEDCBA

No exemplo acima, inicializamos reversed_string como uma string vazia. Em seguida, usamos um loop para iterar pelos caracteres da string original, adicionando cada caractere à frente da string invertida.

Reverter Strings com Recursão

A recursão é outra técnica que pode ser usada para gerar strings invertidas. Você pode criar uma função recursiva que chama a si mesma para inverter uma substring da string original. Aqui está um exemplo:

def reverse_string(string):
if len(string) <= 1:
return string
return reverse_string(string[1:]) + string[0]
string = "ABCDEF"
reversed_string = reverse_string(string)
print(reversed_string)

A saída será:

FEDCBA

No exemplo acima, a função reverse_string() é chamada recursivamente até que a substring tenha apenas um caractere. Em seguida, as chamadas recursivas começam a retornar, invertendo gradualmente a substring e combinando-a com o caractere da posição inicial.

Usando reduce() para Reverter Strings

A função reduce() da biblioteca functools também pode ser usada para inverter strings. A função reduce() recebe uma função e uma sequência como argumentos e aplica a função acumulativamente aos elementos da sequência da esquerda para a direita.

from functools import reduce
string = "ABCDEF"
reversed_string = reduce(lambda x, y: y + x, string)
print(reversed_string)

A saída será:

FEDCBA

No exemplo acima, usamos reduce() com uma função lambda que inverte a ordem dos caracteres. A cada iteração, a função concatena o caractere atual (y) à frente da string acumulada (x), obtendo uma string reversa no final.

Iterando Através de Strings em Ordem Reversa

Além de criar cópias invertidas de strings, você pode iterar diretamente pelas strings em ordem reversa.

A Função built-in reversed()

Python fornece a função reversed() que retorna um iterador reverso para uma sequência. Você pode usar essa função em um loop for para iterar pelos caracteres de uma string em ordem reversa. Veja o exemplo:

string = "ABCDEF"
for char in reversed(string):
print(char)

A saída será:

F
E
D
C
B
A

No exemplo acima, reversed(string) retorna um iterador reverso para a string. Em seguida, usamos um loop for para iterar pelos caracteres desse iterador e imprimi-los individualmente.

O Operador de Slicing, [::-1]

Python também oferece uma sintaxe de slicing específica para inverter sequências. Usando o operador de slicing [::-1], você pode criar um objeto de corte que retorna uma cópia de uma sequência na ordem inversa. Veja o exemplo:

string = "ABCDEF"
reversed_string = string[::-1]
print(reversed_string)

A saída será:

FEDCBA

No exemplo acima, o uso do slicing [::-1] retorna uma nova string contendo todos os caracteres da string original, mas em ordem reversa.

Criando uma String Reversível Personalizada

Além de apenas inverter strings, você também pode criar uma string personalizada que permite realizar operações de reversão. Uma abordagem é implementar uma classe que estende a classe built-in str e adiciona um método reverso personalizado. Aqui está um exemplo:

class ReversibleString(str):
def reverse(self):
return self[::-1]
string = ReversibleString("ABCDEF")
reversed_string = string.reverse()
print(reversed_string)

A saída será:

FEDCBA

No exemplo acima, definimos uma classe ReversibleString que herda da classe str. Em seguida, definimos um método reverse() que usa o slicing [::-1] para criar uma cópia reversa da string.

Ordenando Strings em Ordem Reversa

Python fornece a função sorted() que pode ser usada para classificar uma sequência. Usando o argumento opcional reverse=True, você pode classificar a sequência em ordem reversa. Veja o exemplo:

string = "ZYXWVU"
sorted_string = ''.join(sorted(string, reverse=True))
print(sorted_string)

A saída será:

ZYXWVU

No exemplo acima, usamos sorted(string, reverse=True) para classificar os caracteres da string em ordem reversa. Em seguida, usamos join() para unir os caracteres classificados em uma única string.

Conclusão

Neste tutorial, exploramos várias formas de reverter strings em Python. Com ferramentas como o slicing, a função reversed(), loops e recursão, você pode criar facilmente cópias reversas de strings existentes ou iterar por elas em ordem reversa. Também vimos como criar uma string personalizada com um método reverso e como ordenar strings em ordem reversa usando sorted().

Essas técnicas são úteis para processar e manipular strings de maneira eficaz em Python, e devem ajudar você a melhorar sua habilidade como desenvolvedor Python.