Aggiunta di stringhe in Python

L’oggetto stringa di Python è immutabile. Quindi, ogni volta che utilizziamo l’operatore + per concatenare due stringhe, viene creata una nuova stringa. Se dobbiamo aggiungere molte stringhe, utilizzare l’operatore + creerà inutilmente molte stringhe temporanee prima di ottenere il risultato finale.

Aggiunta di Stringhe in Python

Diamo un’occhiata a una funzione per concatenare una stringa ‘n’ volte.

def str_append(s, n):
    output = ''
    i = 0
    while i < n:
        output += s
        i = i + 1
    return output

Nota che sto definendo questa funzione per mostrare l’uso dell’operatore +. Successivamente, utilizzerò il modulo timeit per testarne le prestazioni. Se desideri semplicemente concatenare una stringa ‘n’ volte, puoi farlo facilmente usando s = 'Ciao' * 10.

Un altro modo per eseguire l’operazione di aggiunta di stringhe è creare una lista e aggiungere stringhe alla lista. Quindi utilizzare la funzione join() delle stringhe per unirle insieme e ottenere la stringa risultante.

def str_append_list_join(s, n):
    l1 = []
    i = 0
    while i < n:
        l1.append(s)
        i += 1
    return ''.join(l1)

Testiamo questi metodi per assicurarci che funzionino come previsto.

if __name__ == "__main__":
    print('Append using + operator:', str_append('Hi', 10))
    print('Append using list and join():', str_append_list_join('Hi', 10))
    # utilizzare quanto segue per questo caso, i metodi sopra sono creati in modo che possiamo
    # verificare le prestazioni utilizzando il modulo timeit
    print('Append using * operator:', 'Hi' * 10)

Output:

Append using + operator: HiHiHiHiHiHiHiHiHiHi
Append using list and join(): HiHiHiHiHiHiHiHiHiHi
Append using * operator: HiHiHiHiHiHiHiHiHiHi

Il modo migliore per aggiungere stringhe in 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

Riepilogo

Se ci sono poche stringhe, puoi usare qualsiasi metodo per aggiungerle. Dal punto di vista della leggibilità, sembra migliore utilizzare l’operatore + per poche stringhe. Tuttavia, se devi aggiungere molte stringhe, dovresti utilizzare la lista e la funzione join().

Puoi controllare lo script Python completo e altri esempi di Python dal nostro Repository GitHub.

Source:
https://www.digitalocean.com/community/tutorials/python-string-append