3 Kahemõõtmeline järjend

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 = ['Tarkvaraarendus', '2019']

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 Pythonis 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. Kasutame värve, et rõhutada järjendi mitmetasemelist ülesehitust.

järjend = [[30, 2], [42]]

Punane tähistab välimist järjendit ja sinine tema elementjärjendeid. 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 [[30, 2], [42]] tekitatud järjendist saada kätte väärtust 2, siis leiame, et ta asub välimises järjendis indeksiga 0 (esimene element) ja selle sees olevas sisemises järjendis on ta element indeksiga 1 (teine element). 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 reast indeksiga 0 ja veerust indeksiga 1.

Väga soovitav on vastata enesetesti küsimustele – nii õigesti kui ka valesti. Kuidas muidu näiteks funktsiooni len toimimisest paremini aru saada?

Enesekontroll (3 ülesannet)

 

Rohkemate mõõtmetega järjendid

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 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.

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Tarkvaraarendus. 2. trükk on loodud Eno Tõnisson, Tauno Palts, Kaarel Tõnisson, Heidi Meier, Merilin Säde, ja Säde Mai Krusberg jt poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut