Immutabilità delle Stringhe
In Python, le stringhe sono immutabili: una volta create, i caratteri che contengono non possono essere modificati direttamente. Qualsiasi "modifica" effettuata crea in realtà una nuova stringa. Questo è importante sia per la correttezza (nessuna modifica accidentale in loco) sia per le prestazioni (modalità di costruzione di stringhe più grandi).
Nessuna modifica in loco
È possibile leggere i caratteri tramite indice, ma non è possibile assegnare loro nuovi valori.
123456s = "hello" t = "H" + s[1:] # Creates a new string: "Hello" print(t) s[0] = "H" # TypeError: strings don't support item assignment
La maggior parte dei metodi delle stringhe restituisce una nuova stringa e lascia l'originale invariata.
123456name = " Alice " name.strip() # returns "Alice" but doesn't change 'name' print(name) # " Alice " name = name.strip() # assign the new value print(name) # "Alice"
L'utilizzo in catena è corretto, ma ricorda che ad ogni passaggio ottieni un nuovo oggetto.
1234msg = " hello\n" clean = msg.strip().upper() print(msg) # original remains " hello\n" print(clean) # "HELLO"
"Modifica" tramite creazione di una nuova stringa
Utilizzare slicing, replace o concatenazione per produrre un nuovo valore.
1234567s = "data" s = s.replace("t", "T") # "daTa" print(t) s = s[:1] + "A" + s[2:] # "dAta" print(t)
Costruzione efficiente
L'uso ripetuto di + in grandi cicli può essere lento (molte stringhe intermedie). Un modello comune è raccogliere i pezzi e unirli una sola volta:
12parts = ["ID:", " ", "123", "\n", "OK"] result = "".join(parts) # "ID: 123\nOK"
Imparerai altri modelli di unione/formattazione nel prossimo capitolo.
1. Quale riga tenta di modificare una stringa in loco e genererà un errore?
2. Cosa stamperà il codice?
3. È necessario assemblare una stringa lunga da molti piccoli pezzi. Qual è la pratica consigliata?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain why string immutability is important in Python?
What are some common mistakes people make when working with immutable strings?
Can you show more examples of efficient string building?
Awesome!
Completion rate improved to 5.26
Immutabilità delle Stringhe
Scorri per mostrare il menu
In Python, le stringhe sono immutabili: una volta create, i caratteri che contengono non possono essere modificati direttamente. Qualsiasi "modifica" effettuata crea in realtà una nuova stringa. Questo è importante sia per la correttezza (nessuna modifica accidentale in loco) sia per le prestazioni (modalità di costruzione di stringhe più grandi).
Nessuna modifica in loco
È possibile leggere i caratteri tramite indice, ma non è possibile assegnare loro nuovi valori.
123456s = "hello" t = "H" + s[1:] # Creates a new string: "Hello" print(t) s[0] = "H" # TypeError: strings don't support item assignment
La maggior parte dei metodi delle stringhe restituisce una nuova stringa e lascia l'originale invariata.
123456name = " Alice " name.strip() # returns "Alice" but doesn't change 'name' print(name) # " Alice " name = name.strip() # assign the new value print(name) # "Alice"
L'utilizzo in catena è corretto, ma ricorda che ad ogni passaggio ottieni un nuovo oggetto.
1234msg = " hello\n" clean = msg.strip().upper() print(msg) # original remains " hello\n" print(clean) # "HELLO"
"Modifica" tramite creazione di una nuova stringa
Utilizzare slicing, replace o concatenazione per produrre un nuovo valore.
1234567s = "data" s = s.replace("t", "T") # "daTa" print(t) s = s[:1] + "A" + s[2:] # "dAta" print(t)
Costruzione efficiente
L'uso ripetuto di + in grandi cicli può essere lento (molte stringhe intermedie). Un modello comune è raccogliere i pezzi e unirli una sola volta:
12parts = ["ID:", " ", "123", "\n", "OK"] result = "".join(parts) # "ID: 123\nOK"
Imparerai altri modelli di unione/formattazione nel prossimo capitolo.
1. Quale riga tenta di modificare una stringa in loco e genererà un errore?
2. Cosa stamperà il codice?
3. È necessario assemblare una stringa lunga da molti piccoli pezzi. Qual è la pratica consigliata?
Grazie per i tuoi commenti!