Immutabilità delle Stringhe
In Python, le stringhe sono immutabili: una volta create, i caratteri che contengono non possono essere modificati direttamente. Qualsiasi "modifica" effettivamente crea 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.
12345678# Cleaning up user input from a registration form user_name = " Alice " user_name.strip() # returns "Alice", but the variable still has spaces print(user_name) # " Alice " user_name = user_name.strip() # assign the cleaned value back print(user_name) # "Alice" → cleaned and ready to store
L'uso in catena va bene, ma ricorda che ad ogni passaggio ottieni un nuovo oggetto.
123456# Normalizing a user's chat message before saving it user_message = " hello\n" clean_message = user_message.strip().upper() print(user_message) # original remains " hello\n" print(clean_message) # "HELLO" → cleaned and ready for processing
"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(s) s = s[:1] + "A" + s[2:] # "dAta" print(s)
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:
1234# Combining message parts received from a device response_parts = ["Status:", " ", "200", "\n", "Success"] response_message = "".join(response_parts) # "Status: 200\nSuccess" print(response_message)
Imparerai altri modelli di unione/formattazione nel prossimo capitolo.
1. Quale riga tenta di modificare una stringa in loco e genererà un errore?
2. Quale sarà l'output del codice?
3. È necessario assemblare una stringa lunga da molti piccoli pezzi. Qual è la soluzione 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
Fantastico!
Completion tasso migliorato a 3.45
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" effettivamente crea 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.
12345678# Cleaning up user input from a registration form user_name = " Alice " user_name.strip() # returns "Alice", but the variable still has spaces print(user_name) # " Alice " user_name = user_name.strip() # assign the cleaned value back print(user_name) # "Alice" → cleaned and ready to store
L'uso in catena va bene, ma ricorda che ad ogni passaggio ottieni un nuovo oggetto.
123456# Normalizing a user's chat message before saving it user_message = " hello\n" clean_message = user_message.strip().upper() print(user_message) # original remains " hello\n" print(clean_message) # "HELLO" → cleaned and ready for processing
"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(s) s = s[:1] + "A" + s[2:] # "dAta" print(s)
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:
1234# Combining message parts received from a device response_parts = ["Status:", " ", "200", "\n", "Success"] response_message = "".join(response_parts) # "Status: 200\nSuccess" print(response_message)
Imparerai altri modelli di unione/formattazione nel prossimo capitolo.
1. Quale riga tenta di modificare una stringa in loco e genererà un errore?
2. Quale sarà l'output del codice?
3. È necessario assemblare una stringa lunga da molti piccoli pezzi. Qual è la soluzione consigliata?
Grazie per i tuoi commenti!