O Python possui vários truques que podem ser usados para acelerar a velocidade de seus códigos. Alguns são mais elaborados, como o uso de vetorizações, enquanto outros são bem simples. Truques para acelerar operações com Python strings se encaixam no segundo grupo. Neste post, apresentaremos pequenos truques que podem ser usados em operações com Python strings e que podem contribuir para melhorar a performance dos códigos.
Mas lembre-se de que a eficácia desses truques varia com a natureza do seu código. Para verificar seus impactos para seu caso específico, use técnicas de profiling.
Priorize join() para concatenações de strings
Talvez poucas pessoas saibam, mas concatenações com join são mais eficientes do que com +. A razão para isso é simples. A concatenação com + cria um novo objeto string a cada nova adição, causando sobrecarga de memória e redução de desempenho. Em comparação, o método join() pré-aloca a string eficientemente, promovendo uma execução mais rápida dos códigos Python.
# menos eficiente
minha_lista = ['eu ', 'gosto ', 'mais ', 'de ', 'Python ', 'do ', 'que ', 'de ', 'tartaruga']
res = ""
for item in minha_lista:
res += str(item)
# mais eficiente
res = ''.join(str(item) for item in minha_lista)
Use f-string para formatações de Python strings
F-strings fornecem uma maneira concisa e eficiente para a formatação de strings. Além disso, f-strings geralmente são mais rápidas do que as antigas formatações de Python strings com % ou str.format().
nome = "Python"
horas = 25
# menos eficiente
f_string = "Eu uso {} {} horas por dia.".format(nome, horas)
# mais eficiente
f_string = f"Eu uso {nome} {horas} horas por dia."
Aproveite os métodos internos do Python para strings
O Python possui vários métodos de strings internos otimizados para operações específicas como busca, formatação e transformação. Eles são mais rápidos e otimizados do que métodos alternativos genéricos.
# menos eficiente
if minha_string[:3] == "Pyt":
# faz alguma coisa
# mais eficiente
if minha_string.startswith("Pyt"):
# faz alguma coisa
Utilize list comprehension
Para a surpresa de muita gente, compreensão de lista (list comprehension) não é apenas uma forma concisa de realizar loops. Na verdade, o uso de compreensão de listas também aumenta a eficiência de códigos Python. Ou seja, códigos com compreensão de listas têm desempenhos que superam geralmente os desempenhos dos loops tradicionais para manipulação de strings.
numeros = [1, 2, 3, 4, 5]
# menos eficiente
devagar_string_numeros = []
for num in numeros:
devagar_string_numeros.append("Número " + str(num))
# mais eficiente
string_numeros = ["Número " + str(num) for num in numeros]
print(string_numeros)