III OSA sisukord |
3.5 SÕNE
Sõne kui andmestruktuur
Oleme sõnedega juba oma kursuste päris algusosast alates tuttavad. Teame, et sõnet raamistavad ülakomad või jutumärgid. Teame, et sõnetüüpi tähistatakse str
ning näiteks arvmuutuja väärtusele vastava sõnetüüpi väärtuse saame funktsiooniga str
. Seda viimast on meil olnud tarvis, kui pikemas tekstis tahame arvmuutuja väärtust kasutada.
a = 16 print("Arvu väärtus on " + str(a))
Siin materjalis aga vaatleme sõnet kui andmestruktuuri ja võrdleme seda teiste andmestruktuuridega, eriti järjendi ja ennikuga. Nimelt on sõne järjendi ja ennikuga päris mitmes mõttes sarnane.
Järjendi ja enniku puhul saame teatud elemendi indeksi abil kätte.
järjend = [1, 2, 5, 6] ennik = (1, 2, 5, 6) print(järjend[3]) print(ennik[3])
Proovime sama ka sõne korral.
sõne ="1256" print(sõne[3])
Mis tüüpi aga on sõne elemendid?
Mitmetes keeltes on tõesti olemas eraldi andmetüüp sümbolite/märkide jaoks (nt char). Pythonis, aga pole ja nii käsitletakse sõne elemente ühemärgiliste sõnedena.
Sarnaselt järjendile ja ennikule saame ka sõne puhul for tsükliga ühekaupa elementidele ligi, näiteks väljastamiseks.
for element in järjend: print(element) for element in ennik: print(element) for element in sõne: print(element)
Sama saab korraldada ka indeksite abil.
for i in range(len(järjend)): print(järjend[i]) for i in range(len(ennik)): print(ennik[i]) for i in range(len(sõne)): print(sõne[i])
Tsüklis võime elemente ka muidugi muul moel kasutada, kui ainult ekraanile toomiseks.
Näiteks võime iga elemendi korral leida, mitu korda ta üldse selles sõnes leidub.
sõne = "Kui Arno isaga koolimajja jõudis, olid tunnid juba alanud" for märk in sõne: print(märk + " on sõnes " + str(sõne.count(märk)) + " korda") Samuti töötavad ka sõne puhul funktsioonid min ja max
Sarnaselt saame järjendeid, ennikuid ja sõnesid ka viilutada.
print(järjend[1:3]) print(ennik[1:3]) print(sõne[1:3])
Kõik eelnevad näited töötasid sarnaselt sõne, järjendi ja enniku korral. Proovime nüüd neid võimalusi, kus järjend ja ennik erinevad, sõne puhul. Nimelt on erinevused selles osas, kas elemente saab muuta ja kas saab neid lisada ja eemaldada. Järjendi puhul saab muuta, lisada ja eemaldada, enniku puhul mitte.
Kuidas on lood sõnes elemendi väärtuse muutmisega?
Proovigem nüüd sõne pikkust muuta.
Samuti ei õnnestu sõne ja enniku puhul elemendi eemaldamine käsu del
või funktsiooni remove
abil.
Seega võib öelda, et sõne kui andmestruktuur sarnaneb pigem enniku kui järjendiga. Tegemist on muutmatute (mittemuteeritavate) andmestruktuuridega.
Selle muutmatuse väite valguses võib tunduda vastuolulisena näiteks funktsiooni replace
tegevus, millega nagu saaks sõnet elemente asendades muuta.
nimi = "Gerd" nimi2 = nimi.replace("d", "t") print(nimi) print(nimi2)
Tegelikult siiski esialgne sõne ei muutu.
III OSA sisukord |