W3docs

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 +

python— editable, runs on the server
Hello World

Puoi 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 +=

python— editable, runs on the server
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 three

Nota 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

python— editable, runs on the server
Hello World

Il 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 line
P, y, t, h, o, n
Python
P
y
t
h
o
n

Perché 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)
--------------------
hahaha

Concatenazione 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=price

Scegliere il Metodo Giusto

SituazioneScelta migliore
Unire due o tre letterali+
Costruire una stringa in un ciclojoin()
Mescolare variabili con testof-string
Unire una lista o qualsiasi iterabilejoin()
Ripetere una stringa N volte*
Stringhe lunghe hard-codedLetterali adiacenti in ()

Per ulteriori operazioni sulle stringhe, consulta Modificare le Stringhe, Slicing delle Stringhe e Metodi delle Stringhe.

Esercitazione

Pratica
Which of the following are correct ways to concatenate strings in Python?
Which of the following are correct ways to concatenate strings in Python?
Was this page helpful?