Agregar cadena en Python

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