Pular para o conteúdo

Como inverter uma string em Python

[

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

Revertendo Strings com Ferramentas Principais do Python

Ao trabalhar com strings em Python, você pode se deparar com a necessidade de trabalhar com elas em ordem inversa. O Python oferece algumas ferramentas e técnicas úteis que podem te ajudar nessas situações. Com elas, você será capaz de criar cópias invertidas de strings existentes de forma rápida e eficiente.

Conhecer essas ferramentas e técnicas para reverter strings em Python irá te ajudar a aprimorar sua habilidade como desenvolvedor Python.

Neste tutorial, você aprenderá como:

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

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

Download Gratuito: Obtenha um capítulo de amostra de Python Basics: A Practical Introduction to Python 3 para ver como você pode ir do nível iniciante para o nível intermediário em Python com um currículo completo, atualizado para o Python 3.8.

Revertendo Strings com Ferramentas Principais do Python

Trabalhar com strings em ordem inversa pode ser uma exigência em algumas situações específicas. Por exemplo, suponha que você tenha uma string "ABCDEF" e deseje uma maneira rápida de invertê-la para obter "FEDCBA". Quais ferramentas do Python você pode usar para te ajudar?

Strings são imutáveis em Python, então reverter uma string existente in-place não é possível. Você precisará criar cópias invertidas de suas strings para atender ao requisito.

Python oferece duas maneiras diretas de reverter strings. Como strings são sequências, elas podem ser acessadas por índices, podem ser fatiadas e são iteráveis. Essas características permitem que você use slicing para gerar diretamente uma cópia de uma string existente em ordem inversa. A segunda opção é usar a função embutida reversed() para criar um iterador que retorna os caracteres de uma string de entrada em ordem inversa.

Revertendo Strings Através de Slicing

Slicing é uma técnica útil que permite extrair elementos de uma sequência usando diferentes combinações de índices inteiros conhecidos como offsets. O slicing pode ser usado para gerar diretamente uma cópia invertida de uma string existente. Veja o exemplo abaixo:

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

Saída:

FEDCBA

Neste exemplo, a string "ABCDEF" é fatiada utilizando a notação [::-1], onde o número negativo -1 indica que a fatia deve ser retornada em ordem inversa. A variável reversed_string recebe a fatia gerada, resultando na string "FEDCBA".

Revertendo Strings com reversed() e .join()

Outra maneira de reverter uma string em Python é usando a função reversed() em conjunto com o método .join(). Veja o exemplo abaixo:

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

Saída:

FEDCBA

Neste exemplo, a função reversed(string) retorna um iterador reverso que contém os caracteres da string "ABCDEF" em ordem inversa. Esse iterador é passado como argumento para o método .join(), que cria uma nova string unindo os caracteres do iterador. O resultado é a string "FEDCBA".

Gerando Strings Invertidas Manualmente

Além das ferramentas principais do Python, é possível gerar manualmente strings invertidas usando iteração e recursão. Essas técnicas podem ser úteis em situações mais complexas ou quando você deseja exercitar suas habilidades de programação.

Revertendo Strings em um Loop

Uma maneira de gerar manualmente uma string invertida é percorrer a string original em um loop e construir uma nova string em ordem inversa. Veja o exemplo abaixo:

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

Saída:

FEDCBA

Neste exemplo, a variável reversed_string é inicializada como uma string vazia. Em seguida, o loop percorre cada caractere da string string e adiciona esse caractere no início da variável reversed_string utilizando a concatenação de strings +. Dessa forma, a string reversed_string é construída em ordem inversa.

Revertendo Strings com Recursão

Outra abordagem para gerar uma string invertida é utilizar a recursão. Veja o exemplo abaixo:

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

Saída:

FEDCBA

Neste exemplo, a função reverse_string() é definida de forma recursiva. A condição de parada é quando a string string se torna vazia, ou seja, quando seu comprimento é igual a zero. Nesse caso, a própria string vazia é retornada. Caso contrário, a função é chamada novamente passando uma fatia da string que começa no segundo caractere (string[1:]) e, em seguida, o primeiro caractere (string[0]) é adicionado ao resultado da chamada recursiva. Isso faz com que os caracteres da string original sejam adicionados em ordem inversa.

Utilizando reduce() para Reverter Strings

A função reduce() da biblioteca functools também pode ser utilizada para reverter uma string em Python. Veja o exemplo abaixo:

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

Saída:

FEDCBA

Neste exemplo, a função reduce() é utilizada juntamente com uma função lambda que recebe dois argumentos x e y. Essa função lambda retorna a concatenação do segundo argumento y com o primeiro argumento x. Dessa forma, a função reduce() é aplicada a todos os caracteres da string string, resultando em uma string invertida.

Iterando Através de Strings em Ordem Inversa

Para iterar por uma sequência em ordem inversa, você pode utilizar a função embutida reversed() ou o operador de slicing [::-1]. Essas abordagens permitem percorrer uma string em ordem inversa sem a necessidade de criar uma nova string invertida. Veja o exemplo abaixo:

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

Saída:

F
E
D
C
B
A

Neste exemplo, a função reversed(string) retorna um iterador reverso que contém os caracteres da string "ABCDEF" em ordem inversa. Dentro do loop for, cada caractere é atribuído à variável char e, em seguida, é impresso.

Outra abordagem seria utilizar o operador de slicing [::-1]. Veja o exemplo abaixo:

string = "ABCDEF"
for char in string[::-1]:
print(char)

Saída:

F
E
D
C
B
A

Neste exemplo, o slicing [::-1] retorna a string string em ordem inversa. Dentro do loop for, cada caractere é atribuído à variável char e, em seguida, é impresso.

Criando uma String Reversível Personalizada

Em algumas situações, pode ser útil criar sua própria classe de string que suporte reversão personalizada. Veja o exemplo abaixo:

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

Saída:

FEDCBA

Neste exemplo, a classe ReversibleString é uma subclasse da classe str. A classe ReversibleString adiciona um método reverse() que retorna a própria string em ordem inversa utilizando o slicing [::-1].

Ordenando Strings Python em Ordem Inversa

Além de inverter strings, você também pode ordená-las em ordem inversa. Para isso, você pode usar a função embutida sorted() em conjunto com o argumento reverse=True. Veja o exemplo abaixo:

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

Saída:

FEDCBA

Neste exemplo, a função sorted() recebe a string string como argumento e o argumento adicional reverse=True. Isso faz com que a string seja ordenada em ordem inversa. Em seguida, o método .join() é utilizado para unir os caracteres da string ordenada e o resultado é impresso.

Conclusão

Neste tutorial, você aprendeu diferentes maneiras de reverter strings em Python. As principais ferramentas e técnicas foram apresentadas, desde o uso de slicing, reversed() e .join(), até iteração, recursão e ordenação de strings em ordem inversa. Com esse conhecimento, você poderá manipular strings em ordem inversa de forma eficiente e personalizada em seus projetos Python.