El objeto de cadena de Python es inmutable. Por lo tanto, cada vez que usamos el operador + para concatenar dos cadenas, se crea una nueva cadena. Si tenemos que agregar muchas cadenas, usar el operador + creará innecesariamente muchas cadenas temporales antes de obtener el resultado final.
Agregar cadena en Python
Vamos a ver una función para concatenar una cadena ‘n’ veces.
def str_append(s, n):
output = ''
i = 0
while i < n:
output += s
i = i + 1
return output
Tenga en cuenta que estoy definiendo esta función para mostrar el uso del operador +. Más tarde usaré el módulo timeit para probar el rendimiento. Si simplemente desea concatenar una cadena ‘n’ veces, puede hacerlo fácilmente usando s = '¡Hola' * 10
.
Otra forma de realizar la operación de agregado de cadenas es creando una lista y agregando cadenas a la lista. Luego, use la función join() de cadenas para fusionarlas y obtener la cadena de resultado.
def str_append_list_join(s, n):
l1 = []
i = 0
while i < n:
l1.append(s)
i += 1
return ''.join(l1)
Vamos a probar estos métodos para asegurarnos de que funcionen como se espera.
if __name__ == "__main__":
print('Append using + operator:', str_append('Hi', 10))
print('Append using list and join():', str_append_list_join('Hi', 10))
# use lo siguiente para este caso, los métodos anteriores se crean para que podamos
# verificar el rendimiento usando el módulo timeit
print('Append using * operator:', 'Hi' * 10)
Salida:
Append using + operator: HiHiHiHiHiHiHiHiHiHi
Append using list and join(): HiHiHiHiHiHiHiHiHiHi
Append using * operator: HiHiHiHiHiHiHiHiHiHi
La mejor manera de concatenar cadenas en Python
I have both the methods defined in string_append.py
file. Let’s use timeit module to check their performance.
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append("Hello", 1000)'
1000 loops, best of 5: 174 usec per loop
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append_list_join("Hello", 1000)'
1000 loops, best of 5: 140 usec per loop
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append("Hi", 1000)'
1000 loops, best of 5: 165 usec per loop
$ python3.7 -m timeit --number 1000 --unit usec 'import string_append' 'string_append.str_append_list_join("Hi", 1000)'
1000 loops, best of 5: 139 usec per loop
Resumen
Si hay pocas cadenas, puedes usar cualquier método para concatenarlas. Desde el punto de vista de la legibilidad, el uso del operador + parece mejor para pocas cadenas. Sin embargo, si tienes que concatenar muchas cadenas, deberías usar la lista y la función join().
Puedes revisar el script completo de Python y más ejemplos de Python en nuestro Repositorio de GitHub.
Source:
https://www.digitalocean.com/community/tutorials/python-string-append