Concatenare le Stringhe
Impara tutti i modi per concatenare le stringhe in Python: +, +=, join(), f-string e ripetizione con * — con esempi, errori comuni e consigli sulle prestazioni.
La concatenazione di stringhe è il processo di unire due o più stringhe in una sola. Python offre diversi approcci — dal semplice operatore + all'efficiente metodo join() — e scegliere quello giusto è importante per la leggibilità e le prestazioni.
Questo capitolo tratta:
- Gli operatori
+e+= - Unire una lista di stringhe con
join() - Incorporare valori con le f-string
- Ripetere una stringa con
* - Concatenare valori non stringa (e il comune errore
TypeError) - Quando usare
join()invece di+
Capitoli correlati: Stringhe Python · Modificare le Stringhe · Formattare le Stringhe · Metodi delle Stringhe
Usare l'Operatore +
L'operatore + è il modo più diretto per unire due stringhe. Python crea una nuova stringa che contiene tutti i caratteri di entrambi gli operandi nell'ordine.
Concatenare due stringhe con +
Hello WorldPuoi concatenare tutte le stringhe che vuoi in una singola espressione:
greeting = "Good" + " " + "morning" + ", " + "Python!"
print(greeting)Good morning, Python!Attenzione — sono ammesse solo stringhe. L'operatore + non converte automaticamente altri tipi. Tentare di concatenare una stringa e un numero genera un TypeError:
age = 30
# This raises TypeError: can only concatenate str (not "int") to str
# message = "I am " + age + " years old."
# Correct: convert the number to a string first
message = "I am " + str(age) + " years old."
print(message)I am 30 years old.Chiama sempre str() su un valore non stringa prima di usare +.
Usare l'Operatore +=
L'operatore += aggiunge una stringa a una variabile esistente. È un'abbreviazione di variable = variable + new_string ed è utile quando si costruisce una stringa passo dopo passo.
Costruire una frase in modo incrementale con +=
Hello, World!Un caso d'uso comune è accumulare righe all'interno di un ciclo:
words = ["one", "two", "three"]
result = ""
for word in words:
result += word + " "
print(result.strip())one two threeNota sulle prestazioni. L'uso ripetuto di += all'interno di un ciclo crea un nuovo oggetto stringa ad ogni iterazione. Per liste piccole questo è accettabile, ma per grandi collezioni join() (vedi sotto) è significativamente più veloce.
Usare join() per Concatenare una Lista di Stringhe
str.join(iterable) unisce tutte le stringhe in un iterabile, inserendo la stringa su cui viene chiamato tra ogni coppia. È il modo idiomatico in Python per costruire una stringa da una collezione.
Unire parole con uno spazio come separatore
Hello WorldIl separatore può essere qualsiasi cosa — una virgola, un a capo, o persino una stringa vuota:
letters = ["P", "y", "t", "h", "o", "n"]
print(", ".join(letters)) # comma-separated
print("".join(letters)) # no separator — merges into one word
print("\n".join(letters)) # one letter per lineP, y, t, h, o, n
Python
P
y
t
h
o
nPerché preferire join() a + nei cicli?
Ogni chiamata a + alloca una nuova stringa. join() calcola la lunghezza totale una volta sola, alloca la memoria una volta e copia tutte le parti in un'unica operazione — rendendolo O(n) invece di O(n²) per input di grandi dimensioni.
# Slow for large collections
parts = ["a"] * 10_000
result = ""
for p in parts:
result += p # 10,000 allocations
# Fast — single allocation
result = "".join(parts)Usare le f-String per Concatenare Valori
Le f-string (disponibili da Python 3.6) permettono di incorporare variabili ed espressioni direttamente all'interno di un letterale stringa senza alcuna chiamata esplicita a + o str().
first_name = "Ada"
last_name = "Lovelace"
birth_year = 1815
bio = f"{first_name} {last_name} was born in {birth_year}."
print(bio)Ada Lovelace was born in 1815.Le f-string sono spesso più chiare di + quando si mescolano più variabili con testo letterale. Consulta il capitolo Formattare le Stringhe per la sintassi completa delle f-string e le opzioni di formattazione.
Ripetere una Stringa con *
L'operatore * ripete una stringa un dato numero di volte, rappresentando un'alternativa concisa a un ciclo di concatenazione.
line = "-" * 20
print(line)
echo = "ha" * 3
print(echo)--------------------
hahahaConcatenazione di Stringhe su Più Righe
Python unisce automaticamente i letterali stringa adiacenti che appaiono su righe consecutive all'interno delle parentesi — senza bisogno di +. Questo è utile per stringhe lunghe hard-coded.
message = (
"This is the first part. "
"This is the second part. "
"And this is the third."
)
print(message)This is the first part. This is the second part. And this is the third.Puoi anche spezzare una lunga concatenazione su più righe con una barra rovesciata:
long_url = "https://example.com/products" \
"?category=books" \
"&sort=price"
print(long_url)https://example.com/products?category=books&sort=priceScegliere il Metodo Giusto
| Situazione | Scelta migliore |
|---|---|
| Unire due o tre letterali | + |
| Costruire una stringa in un ciclo | join() |
| Mescolare variabili con testo | f-string |
| Unire una lista o qualsiasi iterabile | join() |
| Ripetere una stringa N volte | * |
| Stringhe lunghe hard-coded | Letterali adiacenti in () |
Per ulteriori operazioni sulle stringhe, consulta Modificare le Stringhe, Slicing delle Stringhe e Metodi delle Stringhe.