I OSA sisukord |
1.1 SISSEJUHATUS
Järjend on Pythoni andmestruktuur, mille abil saab ühes muutujas hoida mitut väärtust. Näiteks muutujale kursus
omistatakse järjend, mis koosneb kahest sõnest:
kursus = ['Programmeerimise alused', '2']
Varem oleme kasutanud peamiselt järjendeid, mille elemendid on arvud või sõned. Tegelikult võime järjendis hoida igasugust tüüpi väärtuseid, kusjuures järjendi elemendid võivad isegi eri tüüpi olla:
huvitav_jarjend = ['Taisi Telk', 29, True]
Muuhulgas võivad järjendi elementideks olla ka teised järjendid:
kahemootmeline_jarjend = [[30, 2], [42]]
Siin on tegemist järjendiga, millel on kaks elementi. Esimene element on järjend, mille elementideks on arvud 30
ja 2
ning teine on järjend, mille ainsaks elemendiks on 42
. Ülal olid koodis värvid vastavalt Pythoni struktuurile nii nagu meil materjalides koodinäited ikka on. Nüüd aga kasutame värve, et rõhutada järjendi mitmetasemelist ülesehitust.
järjend = [[30, 2], [42]]
Punane on välimise järjendi tähistamiseks ja sinine tema elementjärjendite jaoks. Nende sisemiste järjendite elemendid on hallid.
See on meie esimene kahemõõtmeline andmestruktuur. Kahemõõtmeliseks nimetatakse seda sellepärast, et kõige sisemiste elementide (eelmises näites 30
, 2
, 42
) asukoht määratakse kahe mõõtme abil. Esiteks tuleb määrata, mitmendas sisemises järjendis element asub ja teiseks, mitmes element ta on selle väljavalitud sisemise järjendi elementide hulgas. Seejuures peame meeles, et järjendi elemente nummerdatakse indeksite abil ja indeksid algavad alati nullist. Näiteks kui tahame eelmises näites tekitatud järjendist saada kätte väärtust 2
, siis leiame, et ta asub sisemises järjendis, mille indeks välimise suhtes on 0
ja selles 0
-ndas sisemises järjendis on ta element indeksiga 1
. Koodis pannakse see kirja niimoodi:
kahemootmeline_jarjend = [[30, 2], [42]] print(kahemootmeline_jarjend[0][1]) # Väljastab 2
Kahemõõtmelise järjendi sisemiste elementide poole pöördumiseks paigutatakse pärast muutuja nime kaks paari nurksulge. Esimesed nurksulud sisaldavad indeksit, mis määrab vaadeldava sisemise järjendi. Teiste nurksulgude sisse kirjutatakse indeks, mis määrab elemendi asukoha saadud sisemises järjendis.
Tähele tuleb panna, et tavaline "inimlik" ja programmeerimise kõnepruuk erinevad. Rääkides järjendi a
esimese elemendi teisest elemendist peetakse silmas ilmselt elementi a[0][1]
.
Kahemõõtmelist järjendit võime visualiseerida ka kahe ruumimõõtme abil. Sel juhul võiks esimesest indeksist mõelda kui rea indeksist ja teisest kui veeru indeksist. Siis näeb meie näitejärjend välja selline:
30 2 42
Elemendi väärtusega 2
leiab tõesti sellest tabelist realt indeksiga 0
ja veerult indeksiga 1
.
Väga soovitav on vastata enesetesti küsimustele - nii õigesti kui ka valesti. Kuidas muidu näiteks funktsiooni len
toimimisest paremini arusaada?
Aga kui järjendite sees saab hoida järjendeid, siis kas nende sees saab hoida omakorda veel järjendeid? Jah, tehniliselt ei piira meid miski tekitamast ükskõik kui sügavaid seesuguseid struktuure. Võime isegi mõelda järjendite peale, kus igal sügavusastmel võib olla kas n-ö lõppelemente või veel järjendeid. Sellist andmestruktuuri võib nimetada n-mõõtmeliseks järjendiks. Kuidas tegutseda andmestruktuuriga, mille sügavust me ei tea? Sellest räägime selle kursuse viimastel nädalatel rekursiivsete andmestruktuuride juures.
I OSA sisukord |