Strängars Oföränderlighet
I Python är strängar oföränderliga: när de väl har skapats kan tecknen de innehåller inte ändras på plats. Varje "ändring" du gör skapar faktiskt en ny sträng. Detta är viktigt för korrekthet (inga oavsiktliga ändringar på plats) och för prestanda (hur du bygger större strängar).
Inga ändringar på plats
Du kan läsa tecken via index, men du kan inte tilldela dem nya värden.
123456s = "hello" t = "H" + s[1:] # Creates a new string: "Hello" print(t) s[0] = "H" # TypeError: strings don't support item assignment
De flesta strängmetoder returnerar en ny sträng och lämnar originalet oförändrat.
123456name = " Alice " name.strip() # returns "Alice" but doesn't change 'name' print(name) # " Alice " name = name.strip() # assign the new value print(name) # "Alice"
Kedjning är tillåten, men kom ihåg att du får ett nytt objekt vid varje steg.
1234msg = " hello\n" clean = msg.strip().upper() print(msg) # original remains " hello\n" print(clean) # "HELLO"
"Modifiera" genom att skapa en ny sträng
Använd slicing, replace eller konkatenering för att skapa ett nytt värde.
1234567s = "data" s = s.replace("t", "T") # "daTa" print(t) s = s[:1] + "A" + s[2:] # "dAta" print(t)
Effektiv uppbyggnad
Upprepad + i stora loopar kan vara långsam (många mellanliggande strängar). Ett vanligt mönster är att samla delar och slå ihop en gång:
12parts = ["ID:", " ", "123", "\n", "OK"] result = "".join(parts) # "ID: 123\nOK"
Du kommer att lära dig fler mönster för sammanslagning/formatering i nästa kapitel.
1. Vilken rad försöker ändra en sträng på plats och kommer att ge ett felmeddelande?
2. Vad kommer koden att skriva ut?
3. Du behöver sätta ihop en lång sträng från många små delar. Vad rekommenderas?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Strängars Oföränderlighet
Svep för att visa menyn
I Python är strängar oföränderliga: när de väl har skapats kan tecknen de innehåller inte ändras på plats. Varje "ändring" du gör skapar faktiskt en ny sträng. Detta är viktigt för korrekthet (inga oavsiktliga ändringar på plats) och för prestanda (hur du bygger större strängar).
Inga ändringar på plats
Du kan läsa tecken via index, men du kan inte tilldela dem nya värden.
123456s = "hello" t = "H" + s[1:] # Creates a new string: "Hello" print(t) s[0] = "H" # TypeError: strings don't support item assignment
De flesta strängmetoder returnerar en ny sträng och lämnar originalet oförändrat.
123456name = " Alice " name.strip() # returns "Alice" but doesn't change 'name' print(name) # " Alice " name = name.strip() # assign the new value print(name) # "Alice"
Kedjning är tillåten, men kom ihåg att du får ett nytt objekt vid varje steg.
1234msg = " hello\n" clean = msg.strip().upper() print(msg) # original remains " hello\n" print(clean) # "HELLO"
"Modifiera" genom att skapa en ny sträng
Använd slicing, replace eller konkatenering för att skapa ett nytt värde.
1234567s = "data" s = s.replace("t", "T") # "daTa" print(t) s = s[:1] + "A" + s[2:] # "dAta" print(t)
Effektiv uppbyggnad
Upprepad + i stora loopar kan vara långsam (många mellanliggande strängar). Ett vanligt mönster är att samla delar och slå ihop en gång:
12parts = ["ID:", " ", "123", "\n", "OK"] result = "".join(parts) # "ID: 123\nOK"
Du kommer att lära dig fler mönster för sammanslagning/formatering i nästa kapitel.
1. Vilken rad försöker ändra en sträng på plats och kommer att ge ett felmeddelande?
2. Vad kommer koden att skriva ut?
3. Du behöver sätta ihop en lång sträng från många små delar. Vad rekommenderas?
Tack för dina kommentarer!