< eelmine | 7. nädala sisukord | järgmine > |
7.2 JÄRJENDITE JÄRJEND
Eelmises osas sai räägitud, et kahemõõtmelisest järjendist saab elementidele ligi, kasutades kahte järjestikkust nurksulgudesse paigutatud indeksit:
jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['sõne']] print(jarjendite_jarjend[0][2]) # Väljastab 4
Kuid samuti võime kahemõõtmelist järjendit vaadelda tavalise ühemõõtmelise järjendina, mille elemendid on lihtsalt mingid järjendid, mille sisu meid ei huvitagi. Näiteks võib meid huvitada ainult selle välimise järjendi elementide arv:
jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['sõne']] print(len(jarjendite_jarjend)) # Väljastab 4
Või äkki hoopis tahame teha midagi tema viimase elemendiga (järjendiga), hoolimata otseselt sellest, mis elemendid selle sees on:
jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['sõne']] viimane = jarjendite_jarjend[-1] print(len(viimane)) # Väljastab 1 print(viimane.count(5)) # Väljastab 0 print(viimane.count('sõne')) # Väljastab 1 print(viimane) # Väljastab ['sõne']
Eelmine näide oli kunstlik - tegelikult võivad erinevate andmetüüpidega järjendid olla muidugi ka sisukamad.
Kahemõõtmelist järjendit võime vastavalt vajadusele käsitleda kas
- teatud tüüpi tabelina, kus iga elemendi asukoht on määratud kahe indeksiga või
- tavalise ühemõõtmelise järjendina, mille elemendid on järjendi tüüpi väärtused.
Näiteks järjendi
inimesed = [['Kersti', 49, False], ['Jüri', 40, True], ['Eiki', 65, True]]
puhul on esimene käsitlus on sobiv, kui peame näiteks leidma, kui vana on järjendi kolmas inimene ja teine käsitlus on hea, kui peame lihtsalt kokku lugema, mitme inimese andmed järjendis on.
Nii saame leida veel näiteks iga sisemise järjendi (rea) maksimaalse elemendi:
lst = [[1, 3, 2], [4, 5, 6], [7, 8, 9]] for rida in lst: print(max(rida))
Ülesanne
Tegelikult võime kahemõõtmelise järjendi teise taseme (sügavatele) elementidele ligi pääseda ka kahe sammuga: esmalt eraldame meid huvitava sisemise järjendi ning siis valime sellest omakorda sobiva elemendi.
jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['sõne']] sisemine = jarjendite_jarjend[1] print(sisemine[0]) # Väljastab -1
Pythoni "kõhus" toimub kõik täpselt samamoodi, olenemata sellest, kas valime eraldi välja rea ning sellest elemendi või kasutame kohe kahte indeksit järjest.
Kahemõõtmelised järjendid polegi tegelikult Pythoni jaoks midagi oluliselt erinevat ühemõõtmelisest järjendist. Seega saame ka kahemõõtmelisi järjendeid tekitada juba tuttavatel viisidel:
jarjendite_jarjend = [] # Praegu on see ühemõõtmeline järjend jarjendite_jarjend.append([1, 2, 4]) # Lisame sisemise järjendi - nüüd on kahemõõtmeline jarjendite_jarjend += [[-1, 5, 0]] # Pane tähele! Kahekordsed nurksulud! tyhi = [] jarjendite_jarjend.append(tyhi) viimane = [] viimane.append('sõne') jarjendite_jarjend.append(viimane) print(jarjendite_jarjend) # Väljastab [[1, 2, 4], [-1, 5, 0], [], ['sõne']]
Selgitame natuke põhjalikumalt, miks on jarjendite_jarjend += -1, 5, 0?
puhul just kahekordsed nurksulud. Nii lisatakse uueks elemendiks kogu [-1, 5, 0]
. jarjendite_jarjend += [-1, 5, 0]
puhul lisataks iga arv eraldi elemendina.
Ülesanne
Andmed pärinevad statistikaameti populaarseimate nimede hulgast.
Ülesanne
Kuigi Python lubab hoida ühes järjendis mitut eri tüüpi väärtust, siis see on üpris veaohtlik, sest programmeerija peab siis meeles pidama, mis tüüpi väärtused kuskil asuvad. Kui võimalik, siis on mõistlik püüda hoida eri tüüpi väärtuseid erinevates järjendites.
< eelmine | 7. nädala sisukord | järgmine > |