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 inversa. O Python oferece algumas ferramentas e técnicas úteis que podem ajudá-lo nessas situações. Com elas, você será capaz de criar cópias reversas de strings existentes de forma rápida e eficiente.

Conhecer essas ferramentas e técnicas para reverter strings em Python ajudará você a aprimorar sua capacidade como desenvolvedor Python.

Neste tutorial, você aprenderá como:

  • Construir rapidamente strings reversas usando slicing;
  • Criar cópias reversas de strings existentes usando reversed() e .join();
  • Usar 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, é recomendado que você conheça o básico de strings, loops for e while e recursão em Python.

Revertendo Strings com Ferramentas Principais do Python

Trabalhar com strings em Python em ordem inversa 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 reversão para obter "FEDCBA". Quais ferramentas em Python você pode usar para ajudar?

Strings são imutáveis em Python, então reverter uma string dada no lugar não é possível. Você precisará criar cópias reversas das suas strings alvo para atender ao requisito.

O Python fornece duas maneiras simples de reverter strings. Como as strings são sequências, elas são indexáveis, fatiáveis e iteráveis. Essas características permitem que você use slicing para gerar diretamente uma cópia de uma determinada string 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

O slicing é uma técnica útil que permite extrair itens de uma sequência usando diferentes combinações de índices inteiros, conhecidos como deslocamentos.

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

Nesse exemplo, a string original "ABCDEF" é invertida usando slicing com notação [::-1]. O resultado é uma cópia da string em ordem reversa, que é armazenada na variável reversed_string. Em seguida, a string invertida é impressa na saída.

Revertendo Strings com reversed() e .join()

Outra maneira de reverter uma string é usando a função reversed() juntamente com o método .join(). A função reversed() cria um iterador que retorna os caracteres da string de entrada em ordem inversa. Em seguida, o método .join() pode ser usado para concatenar os caracteres em uma string reversa.

string = "ABCDEF"
reversed_string = ''.join(reversed(string))
print(reversed_string)
# Output: "FEDCBA"

Nesse exemplo, a função reversed() é usada para criar um iterador reverso a partir da string original "ABCDEF". Em seguida, o método .join() é usado para juntar os caracteres retornados pelo iterador e formar uma string reversa. O resultado é impresso na saída.

Gerando Strings Reversas Manualmente

Em alguns casos, pode ser necessário gerar strings reversas manualmente, sem o uso das ferramentas e técnicas mencionadas anteriormente. Isso pode ser feito por meio de iteração e recursão.

Revertendo Strings em um Loop

Uma maneira de reverter uma string em um loop é percorrer a string original a partir do último caractere até o primeiro e adicionar cada caractere a uma nova string.

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

Nesse exemplo, um loop for é usado para percorrer cada caractere da string original "ABCDEF". A cada iteração, o caractere é adicionado ao início da nova string reversed_string. No final do loop, reversed_string contém a reversão da string original.

Revertendo Strings com Recursão

A recursão também pode ser usada para reverter uma string. Uma função recursiva pode chamar a si mesma repetidamente, reduzindo a string original a cada chamada até que reste apenas um único caractere. Em seguida, os caracteres são concatenados na medida em que as chamadas recursivas retornam.

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

Nesse exemplo, uma função recursiva reverse_string() é definida. Ela verifica se a string passada como argumento tem tamanho menor ou igual a 1. Se for o caso, a função retorna a própria string. Caso contrário, a função chama a si mesma com a string a partir do segundo caractere (string[1:]) e concatena o primeiro caractere da string original (string[0]). A recursão continua até que sejam concatenados todos os caracteres na ordem reversa.

Usando reduce() para Reverter Strings

A função reduce() do módulo functools também pode ser usada para reverter uma string. A função reduce() aplica uma função cumulativa a uma sequência, retornando um único valor resultante. No caso de reverter uma string, a função cumulativa é definida para concatenar o caractere atual no final da string acumulada.

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

Nesse exemplo, a função lambda recebe dois argumentos x e y e retorna y + x. A função reduce() aplica essa função cumulativa a cada caractere da string original "ABCDEF", concatenando-o ao final da string acumulada. O resultado final da redução é uma string reversa.

Iterando Através de Strings em Ordem Reversa

Além de criar cópias reversas de strings, às vezes você pode precisar iterar através das strings em ordem inversa. O Python fornece duas maneiras diferentes de realizar iteração reversa em strings.

A Função Embutida reversed()

A função embutida reversed() pode ser usada para iterar sobre os caracteres de uma string em ordem inversa. Ela cria um iterador reverso que gera os caracteres da string a partir do último até o primeiro.

string = "ABCDEF"
for char in reversed(string):
print(char)
# Output:
# F
# E
# D
# C
# B
# A

Nesse exemplo, a função reversed() é usada dentro de um loop for para criar um iterador reverso que itera sobre os caracteres da string original "ABCDEF". A cada iteração, o caractere é impresso na saída.

O Operador de Slicing [::-1]

Outra maneira de iterar através dos caracteres de uma string em ordem inversa é usando o operador de slicing [::-1]. Esse operador cria uma cópia reversa da string original e permite que você acesse os caracteres em ordem inversa.

string = "ABCDEF"
for char in string[::-1]:
print(char)
# Output:
# F
# E
# D
# C
# B
# A

Nesse exemplo, o operador de slicing [::-1] é usado dentro de um loop for para criar uma cópia reversa da string original "ABCDEF". O loop itera sobre os caracteres dessa cópia reversa e imprime cada caractere na saída.

Criando uma String Reversível Personalizada

Além de reverter strings em Python, você também pode criar suas próprias classes de strings que possam ser revertidas. Para fazer isso, você precisa implementar os métodos __reversed__() e __getitem__(). O método __reversed__() é chamado pela função reversed() e deve retornar um iterador reverso. O método __getitem__() permite acessar os caracteres da string pelo índice.

class ReversibleString:
def __init__(self, string):
self.string = string
def __reversed__(self):
return ''.join(reversed(self.string))
def __getitem__(self, index):
return self.string[index]
string = ReversibleString("ABCDEF")
reversed_string = reversed(string)
print(''.join(reversed_string))
# Output: "FEDCBA"
print(string[2])
# Output: "C"

Nesse exemplo, a classe ReversibleString é definida com os métodos __init__() para inicializar uma string, __reversed__() para criar um iterador reverso e __getitem__() permitir o acesso aos caracteres pelo índice. A string retornada pela função reversed() é concatenada usando o método .join() e impressa na saída. Um caractere específico da string original é acessado usando o operador de índice ([]) e também é impresso na saída.

Ordenando Strings Python em Ordem Inversa

Outra aplicação interessante de reverter strings em Python é quando você precisa ordenar suas strings em ordem inversa. Isso pode ser útil, por exemplo, quando você precisa classificar uma lista de palavras em ordem alfabética decrescente.

O Python fornece a função embutida sorted() para realizar a ordenação de listas. Quando você passa o argumento reverse=True para essa função, ela retorna uma lista classificada em ordem inversa.

strings = ["ABC", "DEF", "GHI", "JKL"]
reverse_sorted = sorted(strings, reverse=True)
print(reverse_sorted)
# Output: ['JKL', 'GHI', 'DEF', 'ABC']

Nesse exemplo, a função sorted() é usada para ordenar a lista de strings "ABC", "DEF", "GHI", "JKL". O argumento reverse=True é passado para classificar a lista em ordem inversa. A lista classificada em ordem inversa é impressa na saída.

Conclusão

Reverter strings em Python é uma tarefa comum que pode ser realizada usando várias ferramentas e técnicas disponíveis na linguagem. Neste tutorial, você aprendeu sobre o slicing de strings, as funções reversed() e .join(), iteração, recursão e o uso do reduce() para reverter strings. Você também descobriu como iterar através de strings em ordem inversa e criar suas próprias classes de strings reversíveis. Além disso, você viu como ordenar strings em ordem inversa usando a função sorted(). Agora você tem o conhecimento necessário para trabalhar com strings em ordem inversa de forma eficiente em seus projetos Python.

Recomendamos que você pratique essas técnicas e explore ainda mais as capacidades de manipulação de strings em Python. Quanto mais você se familiarizar com essas ferramentas, mais proficiente você se tornará na linguagem Python.