String em Python não possui uma função embutida reverse(). No entanto, existem várias maneiras de inverter uma string em Python.
1. Como Inverter uma String em Python?
Algumas das maneiras comuns de inverter uma string são:
- Usando Slicing para criar uma cópia invertida da string.
- Usando um loop for e anexando caracteres na ordem inversa
- Usando um loop while para iterar pelos caracteres da string na ordem inversa e anexá-los
- Usando a função join() da string com o iterador reversed()
- Criando uma lista a partir da string e chamando sua função
reverse()
- Usando Recursão
1.1) Inverter String em Python usando Slicing
def reverse_slicing(s):
return s[::-1]
input_str = 'ABç∂EF'
if __name__ == "__main__":
print('Reverse String using slicing =', reverse_slicing(input_str))
Se você executar o script Python acima, a saída será:
Reverse String using slicing = FE∂çBA
1.2) Inverter uma String usando o Loop For
def reverse_for_loop(s):
s1 = ''
for c in s:
s1 = c + s1 # appending chars in reverse order
return s1
input_str = 'ABç∂EF'
if __name__ == "__main__":
print('Reverse String using for loop =', reverse_for_loop(input_str))
Saída: Inverter String usando loop for = FE∂çBA
1.3) Inverter uma String usando o Loop While
def reverse_while_loop(s):
s1 = ''
length = len(s) - 1
while length >= 0:
s1 = s1 + s[length]
length = length - 1
return s1
input_str = 'ABç∂EF'
if __name__ == "__main__":
print('Reverse String using while loop =', reverse_while_loop(input_str))
1.4) Inverter uma String usando join() e reversed()
def reverse_join_reversed_iter(s):
s1 = ''.join(reversed(s))
return s1
1.5) Inverter uma String em Python usando reverse() de Listas
def reverse_list(s):
temp_list = list(s)
temp_list.reverse()
return ''.join(temp_list)
1.6) Inverter uma String em Python usando Recursão
def reverse_recursion(s):
if len(s) == 0:
return s
else:
return reverse_recursion(s[1:]) + s[0]
2. Melhor Maneira de Inverter uma String em Python
Podemos inverter uma string através de múltiplos algoritmos. Já vimos seis deles. Mas qual deles você deveria escolher para inverter uma string. Podemos usar o módulo timeit para executar múltiplas iterações dessas funções e obter o tempo médio necessário para executá-las. Todas as funções acima estão armazenadas em um script python chamado string_reverse.py
. Eu executei todas essas funções uma por uma por 1,00,000 vezes usando o módulo timeit e obtive a média das 5 melhores execuções.
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_slicing("ABç∂EF"*10)'
100000 loops, best of 5: 0.449 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_list("ABç∂EF"*10)'
100000 loops, best of 5: 2.46 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_join_reversed_iter("ABç∂EF"*10)'
100000 loops, best of 5: 2.49 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_for_loop("ABç∂EF"*10)'
100000 loops, best of 5: 5.5 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_while_loop("ABç∂EF"*10)'
100000 loops, best of 5: 9.4 usec per loop
$ python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_recursion("ABç∂EF"*10)'
100000 loops, best of 5: 24.3 usec per loop
A tabela abaixo apresenta os resultados e a lentidão de um algoritmo em relação ao melhor.
Algorithm | TimeIt Execution Time (Best of 5) | Slowness |
---|---|---|
Slicing | 0.449 usec | 1x |
List reverse() | 2.46 usec | 5.48x |
reversed() + join() | 2.49 usec | 5.55x |
for loop | 5.5 usec | 12.25x |
while loop | 9.4 usec | 20.94x |
Recursion | 24.3 usec | 54.12x |
3. Resumo
Devemos usar o slicing para inverter uma string em Python. Seu código é muito simples e pequeno e não precisamos escrever nossa própria lógica para inverter a string. Além disso, é a maneira mais rápida de inverter uma string, conforme identificado pelas execuções de teste acima.
Você pode verificar o script Python completo e mais exemplos de Python em nosso Repositório GitHub.
4. Referências
Source:
https://www.digitalocean.com/community/tutorials/python-reverse-string