Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Strängars Oföränderlighet | Strängar
Datatyper i Python

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 med index, men du kan inte tilldela dem nya värden.

123456
s = "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 den ursprungliga oförändrad.

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
Note
Notera

.strip(): tar bort inledande och avslutande blanksteg från en sträng.

Syntax: string.strip()

Kedjning fungerar bra, men kom ihåg att du får ett nytt objekt vid varje steg.

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
Note
Notering

.upper(): Returnerar en kopia av strängen med alla tecken i versaler.

Syntax: string.upper()

"Modifiera" genom att skapa en ny sträng

Använd slicing, replace eller konkatenering för att skapa ett nytt värde.

1234567
s = "data" s = s.replace("t", "T") # "daTa" print(s) s = s[:1] + "A" + s[2:] # "dATa" print(s)
Note
Notering

.replace(): returnerar en kopia av strängen där alla förekomster av en delsträng ersätts med en annan delsträng.

Syntax: string.replace(old, new)

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 dem en gång:

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)
Note
Notering

.join(): Sammanfogar element i en iterable (till exempel en lista) till en enda sträng, separerade av strängen som metoden anropas på.

Syntax: separator.join([str, str, ...])

Note
Notering

Du kommer att lära dig mer om sammanslagnings-/formateringsmönster 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?

question mark

Vilken rad försöker ändra en sträng på plats och kommer att ge ett felmeddelande?

Vänligen välj det korrekta svaret

question mark

Vad kommer koden att skriva ut?

Vänligen välj det korrekta svaret

question mark

Du behöver sätta ihop en lång sträng från många små delar. Vad rekommenderas?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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 med index, men du kan inte tilldela dem nya värden.

123456
s = "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 den ursprungliga oförändrad.

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
Note
Notera

.strip(): tar bort inledande och avslutande blanksteg från en sträng.

Syntax: string.strip()

Kedjning fungerar bra, men kom ihåg att du får ett nytt objekt vid varje steg.

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
Note
Notering

.upper(): Returnerar en kopia av strängen med alla tecken i versaler.

Syntax: string.upper()

"Modifiera" genom att skapa en ny sträng

Använd slicing, replace eller konkatenering för att skapa ett nytt värde.

1234567
s = "data" s = s.replace("t", "T") # "daTa" print(s) s = s[:1] + "A" + s[2:] # "dATa" print(s)
Note
Notering

.replace(): returnerar en kopia av strängen där alla förekomster av en delsträng ersätts med en annan delsträng.

Syntax: string.replace(old, new)

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 dem en gång:

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)
Note
Notering

.join(): Sammanfogar element i en iterable (till exempel en lista) till en enda sträng, separerade av strängen som metoden anropas på.

Syntax: separator.join([str, str, ...])

Note
Notering

Du kommer att lära dig mer om sammanslagnings-/formateringsmönster i nästa kapitel.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4
some-alt