Rozdział 8 · Zabawa literami i słowami

Rzędy nie mogą być zmieniane

Struny nie można zmienić „na miejscu”

Wiersza nie można zmienić „na miejscu”

Może się wydawać, że skoro wiemy, jak uzyskać symbol za pomocą indeksu (word[0]), można też zastąpić go tak samo Sposób. To nieprawda – linie w Python niezmienne (immutable):

popytka_izmenit.py
word = "Cat"
word[0] = "B"
# TypeError: 'str' object does not support item assignment
Dlaczego tak dziwnie?
To świadome urządzenie językowe, a nie ograniczenie. Niezmienne łańcuch znaków są łatwiejsze i bezpieczniejsze do przekazywania między różnymi częściami programu, więc możesz być pewien, że żaden inny fragment kodu „niezauważalnie”

Poprawny sposób: utworzyć nowy łańcuch

Zamiast zmieniać linię „na miejscu”

pravilnyj_sposob.py
word = "Cat"
word = "B" + word[1:]     # sklej "B" z "at" i uzyskaj nową linię
print(word)                # Bat

Właśnie dlatego wszystkie metody łańcuch znaków — upper(), replace() i inni (Sekcje 8.9–8.10) – nie zmieniać oryginału linia, oraz przywrócić nową. Jeśli chcesz zapisać wynik, musisz go zapisać Jawnie przypisz zmienną do:

metody_ne_menyayut.py
text = "python"
text.upper()          # wynik stworzony, ale nigdzie nie zapisany — i utracony!
print(text)            #python - Oryginalna łańcuch znaków niezmieniona

text = text.upper()   # tak — zapisaliśmy wynik z powrotem do text
print(text)            # PYTHON
Podstawowa praktyka
Zamiana pierwszej litery

Dla linii "home" zbuduj nową linię "dome", zastępując pierwszy znak przez cięcie i łączenie – jak pokazano powyżej dla "Cat" → "Bat".

Praktyka: niezmienność łańcuch znaków
Ten sam laptop co w sekcji Line Slicers – ten temat również porusza
Otwórz praktykę →