{"id":28,"date":"2019-03-03T16:11:40","date_gmt":"2019-03-03T16:11:40","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvaraarendus\/chapter\/jarjendite-jarjend\/"},"modified":"2020-07-22T14:04:12","modified_gmt":"2020-07-22T14:04:12","slug":"jarjendite-jarjend","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/jarjendite-jarjend\/","title":{"raw":"J\u00e4rjendite j\u00e4rjend","rendered":"J\u00e4rjendite j\u00e4rjend"},"content":{"raw":"<p class=\"vspace\">Eelmises osas sai r\u00e4\u00e4gitud, et kahem\u00f5\u00f5tmelisest j\u00e4rjendist saab elementidele ligi, kasutades kahte j\u00e4rjestikust nurksulgudesse paigutatud indeksit:<\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['s\u00f5ne']]\nprint(jarjendite_jarjend[0][2])  # V\u00e4ljastab 4<\/pre>\n<p class=\"vspace\"><code class=\"python plain\"><\/code><\/p>\nSamuti v\u00f5ime kahem\u00f5\u00f5tmelist j\u00e4rjendit vaadelda tavalise \u00fchem\u00f5\u00f5tmelise j\u00e4rjendina, mille elemendid on lihtsalt mingid j\u00e4rjendid, mille sisu meid ei huvitagi. N\u00e4iteks v\u00f5ib meid huvitada ainult selle v\u00e4limise j\u00e4rjendi elementide arv:\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['s\u00f5ne']]\nprint(len(jarjendite_jarjend))  # V\u00e4ljastab 4<\/pre>\n<\/div>\n<\/div>\nV\u00f5i \u00e4kki hoopis tahame teha midagi tema viimase elemendiga (j\u00e4rjendiga), hoolimata otseselt sellest, mis elemendid selle sees on:\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['s\u00f5ne']]\nviimane = jarjendite_jarjend[-1]\nprint(len(viimane))            # V\u00e4ljastab 1\nprint(viimane.count(5))        # V\u00e4ljastab 0\nprint(viimane.count('s\u00f5ne'))   # V\u00e4ljastab 1\nprint(viimane)                 # V\u00e4ljastab ['s\u00f5ne']<\/pre>\n<div class=\"lrindent round\">\n\nKahem\u00f5\u00f5tmelist j\u00e4rjendit v\u00f5ime vastavalt vajadusele k\u00e4sitleda kas\n<ul>\n \t<li>teatud t\u00fc\u00fcpi tabelina, kus iga elemendi asukoht on m\u00e4\u00e4ratud kahe indeksiga v\u00f5i<\/li>\n \t<li>tavalise \u00fchem\u00f5\u00f5tmelise j\u00e4rjendina, mille elemendid on j\u00e4rjendi t\u00fc\u00fcpi v\u00e4\u00e4rtused.<\/li>\n<\/ul>\n<\/div>\n<p class=\"vspace\">N\u00e4iteks j\u00e4rjendi<\/p>\n\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">inimesed = [['Kersti', 49, False], ['J\u00fcri', 40, True], ['Eiki', 65,  True]]<\/pre>\n<\/div>\n<\/div>\npuhul on esimene k\u00e4sitlus sobiv, kui peame n\u00e4iteks leidma, kui vana on j\u00e4rjendi kolmas inimene. Teine k\u00e4sitlus on hea, kui peame lihtsalt kokku lugema, mitme inimese andmed j\u00e4rjendis on.\n<p class=\"vspace\">Nii saame leida veel n\u00e4iteks iga sisemise j\u00e4rjendi (rea) maksimaalse elemendi:<\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">lst = [[1, 3, 2], [4, 5, 6], [7, 8, 9]]\nfor rida in lst:\n    print(max(rida))<\/pre>\n<div>\n<h3><strong>Enesekontroll (1 \u00fclesanne)\n<\/strong><\/h3>\n<code>[h5p id=\"2\"]<\/code>\n<h2>Sammhaaval j\u00e4rjendisse laskumine<\/h2>\n<\/div>\n<p class=\"vspace\">Tegelikult v\u00f5ime kahem\u00f5\u00f5tmelise j\u00e4rjendi teise taseme (s\u00fcgavatele) elementidele ligi p\u00e4\u00e4seda ka kahe sammuga: esmalt eraldame meid huvitava sisemise j\u00e4rjendi ning siis valime sellest omakorda sobiva elemendi.<\/p>\n\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['s\u00f5ne']]\nsisemine = jarjendite_jarjend[1]\nprint(sisemine[0])  # V\u00e4ljastab -1<\/pre>\n<\/div>\n<\/div>\nPythoni sisemuses toimub protsess samamoodi, olenemata sellest, kas valime esmalt v\u00e4lja rea ning sellest elemendi v\u00f5i kasutame korraga kahte indeksit.\n<p class=\"vspace\">Kahem\u00f5\u00f5tmelised j\u00e4rjendid polegi tegelikult Pythoni jaoks midagi oluliselt erinevat \u00fchem\u00f5\u00f5tmelisest j\u00e4rjendist. Seega saame ka kahem\u00f5\u00f5tmelisi j\u00e4rjendeid tekitada juba tuttavatel viisidel:<\/p>\n\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">jarjendite_jarjend = []               # Praegu on see \u00fchem\u00f5\u00f5tmeline j\u00e4rjend\njarjendite_jarjend.append([1, 2, 4])  # Lisame sisemise j\u00e4rjendi - n\u00fc\u00fcd on kahem\u00f5\u00f5tmeline\njarjendite_jarjend += [[-1, 5, 0]]    # Pane t\u00e4hele! Kahekordsed nurksulud!\ntyhi = []\njarjendite_jarjend.append(tyhi)\nviimane = []\nviimane.append('s\u00f5ne')\njarjendite_jarjend.append(viimane)\nprint(jarjendite_jarjend)             # V\u00e4ljastab [[1, 2, 4], [-1, 5, 0], [], ['s\u00f5ne']]<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">Selgitame natuke p\u00f5hjalikumalt, miks on <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">jarjendite_jarjend += [[-1, 5, 0]]<\/code> puhul just kahekordsed nurksulud. Nii lisatakse uueks elemendiks kogu j\u00e4rjend <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">[-1, 5, 0]<\/code>. <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">jarjendite_jarjend += [-1, 5, 0]<\/code> puhul lisataks iga arv eraldi elemendina.<\/p>\n\n<h2 class=\"vspace\">Enesekontroll (2 \u00fclesannet)<\/h2>\nAndmed p\u00e4rinevad <a class=\"urllink\" href=\"http:\/\/www.stat.ee\/public\/apps\/nimed\/TOP\" target=\"_blank\" rel=\"noopener noreferrer\">statistikaameti populaarseimate nimede hulgast<\/a>.\n<div>\n\n&nbsp;\n\n<span id=\"test6-tog\" class=\"toggle\"> <code>[h5p id=\"3\"]<\/code> <\/span>\n<h2>Erit\u00fc\u00fcbiliste elementidega j\u00e4rjendid<\/h2>\n<\/div>\n<p class=\"vspace\">Kuigi Python lubab hoida \u00fches j\u00e4rjendis mitut eri t\u00fc\u00fcpi v\u00e4\u00e4rtust, on see \u00fcpris veaohtlik, sest programmeerija peab siis meeles pidama, mis t\u00fc\u00fcpi v\u00e4\u00e4rtused kuskil asuvad. Kui v\u00f5imalik, siis on m\u00f5istlik p\u00fc\u00fcda hoida eri t\u00fc\u00fcpi v\u00e4\u00e4rtuseid erinevates j\u00e4rjendites.<\/p>\n\n<h2>Maatriks<\/h2>\nKui j\u00e4rjendis (v\u00f5i muus tabelis) on igas elemendis sama arv alamelemente (ehk tabeli igal real on sama arv v\u00e4\u00e4rtusi), nimetatakse seda struktuuri <strong>maatriksiks<\/strong>. Seda matemaatikast p\u00e4rinevat terminit kasutame ka edaspidi. L\u00e4hemalt v\u00f5id maatriksist lugeda j\u00e4rgnevast <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvaraarendus\/chapter\/lisalugemine-maatriks\/\">lisamaterjalide peat\u00fckist<\/a>.\n\n&nbsp;","rendered":"<p class=\"vspace\">Eelmises osas sai r\u00e4\u00e4gitud, et kahem\u00f5\u00f5tmelisest j\u00e4rjendist saab elementidele ligi, kasutades kahte j\u00e4rjestikust nurksulgudesse paigutatud indeksit:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['s\u00f5ne']]\nprint(jarjendite_jarjend[0][2])  # V\u00e4ljastab 4<\/pre>\n<p class=\"vspace\"><code class=\"python plain\"><\/code><\/p>\n<p>Samuti v\u00f5ime kahem\u00f5\u00f5tmelist j\u00e4rjendit vaadelda tavalise \u00fchem\u00f5\u00f5tmelise j\u00e4rjendina, mille elemendid on lihtsalt mingid j\u00e4rjendid, mille sisu meid ei huvitagi. N\u00e4iteks v\u00f5ib meid huvitada ainult selle v\u00e4limise j\u00e4rjendi elementide arv:<\/p>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['s\u00f5ne']]\nprint(len(jarjendite_jarjend))  # V\u00e4ljastab 4<\/pre>\n<\/div>\n<\/div>\n<p>V\u00f5i \u00e4kki hoopis tahame teha midagi tema viimase elemendiga (j\u00e4rjendiga), hoolimata otseselt sellest, mis elemendid selle sees on:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['s\u00f5ne']]\nviimane = jarjendite_jarjend[-1]\nprint(len(viimane))            # V\u00e4ljastab 1\nprint(viimane.count(5))        # V\u00e4ljastab 0\nprint(viimane.count('s\u00f5ne'))   # V\u00e4ljastab 1\nprint(viimane)                 # V\u00e4ljastab ['s\u00f5ne']<\/pre>\n<div class=\"lrindent round\">\n<p>Kahem\u00f5\u00f5tmelist j\u00e4rjendit v\u00f5ime vastavalt vajadusele k\u00e4sitleda kas<\/p>\n<ul>\n<li>teatud t\u00fc\u00fcpi tabelina, kus iga elemendi asukoht on m\u00e4\u00e4ratud kahe indeksiga v\u00f5i<\/li>\n<li>tavalise \u00fchem\u00f5\u00f5tmelise j\u00e4rjendina, mille elemendid on j\u00e4rjendi t\u00fc\u00fcpi v\u00e4\u00e4rtused.<\/li>\n<\/ul>\n<\/div>\n<p class=\"vspace\">N\u00e4iteks j\u00e4rjendi<\/p>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">inimesed = [['Kersti', 49, False], ['J\u00fcri', 40, True], ['Eiki', 65,  True]]<\/pre>\n<\/div>\n<\/div>\n<p>puhul on esimene k\u00e4sitlus sobiv, kui peame n\u00e4iteks leidma, kui vana on j\u00e4rjendi kolmas inimene. Teine k\u00e4sitlus on hea, kui peame lihtsalt kokku lugema, mitme inimese andmed j\u00e4rjendis on.<\/p>\n<p class=\"vspace\">Nii saame leida veel n\u00e4iteks iga sisemise j\u00e4rjendi (rea) maksimaalse elemendi:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">lst = [[1, 3, 2], [4, 5, 6], [7, 8, 9]]\nfor rida in lst:\n    print(max(rida))<\/pre>\n<div>\n<h3><strong>Enesekontroll (1 \u00fclesanne)<br \/>\n<\/strong><\/h3>\n<p><code><\/p>\n<div id=\"h5p-2\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-2\" class=\"h5p-iframe\" data-content-id=\"2\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"2dj\u00e4rjend-2-1-\u00fcksk\u00fcs\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h2>Sammhaaval j\u00e4rjendisse laskumine<\/h2>\n<\/div>\n<p class=\"vspace\">Tegelikult v\u00f5ime kahem\u00f5\u00f5tmelise j\u00e4rjendi teise taseme (s\u00fcgavatele) elementidele ligi p\u00e4\u00e4seda ka kahe sammuga: esmalt eraldame meid huvitava sisemise j\u00e4rjendi ning siis valime sellest omakorda sobiva elemendi.<\/p>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">jarjendite_jarjend = [[1, 2, 4], [-1, 5, 0], [], ['s\u00f5ne']]\nsisemine = jarjendite_jarjend[1]\nprint(sisemine[0])  # V\u00e4ljastab -1<\/pre>\n<\/div>\n<\/div>\n<p>Pythoni sisemuses toimub protsess samamoodi, olenemata sellest, kas valime esmalt v\u00e4lja rea ning sellest elemendi v\u00f5i kasutame korraga kahte indeksit.<\/p>\n<p class=\"vspace\">Kahem\u00f5\u00f5tmelised j\u00e4rjendid polegi tegelikult Pythoni jaoks midagi oluliselt erinevat \u00fchem\u00f5\u00f5tmelisest j\u00e4rjendist. Seega saame ka kahem\u00f5\u00f5tmelisi j\u00e4rjendeid tekitada juba tuttavatel viisidel:<\/p>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">jarjendite_jarjend = []               # Praegu on see \u00fchem\u00f5\u00f5tmeline j\u00e4rjend\njarjendite_jarjend.append([1, 2, 4])  # Lisame sisemise j\u00e4rjendi - n\u00fc\u00fcd on kahem\u00f5\u00f5tmeline\njarjendite_jarjend += [[-1, 5, 0]]    # Pane t\u00e4hele! Kahekordsed nurksulud!\ntyhi = []\njarjendite_jarjend.append(tyhi)\nviimane = []\nviimane.append('s\u00f5ne')\njarjendite_jarjend.append(viimane)\nprint(jarjendite_jarjend)             # V\u00e4ljastab [[1, 2, 4], [-1, 5, 0], [], ['s\u00f5ne']]<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">Selgitame natuke p\u00f5hjalikumalt, miks on <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">jarjendite_jarjend += [[-1, 5, 0]]<\/code> puhul just kahekordsed nurksulud. Nii lisatakse uueks elemendiks kogu j\u00e4rjend <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">[-1, 5, 0]<\/code>. <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">jarjendite_jarjend += [-1, 5, 0]<\/code> puhul lisataks iga arv eraldi elemendina.<\/p>\n<h2 class=\"vspace\">Enesekontroll (2 \u00fclesannet)<\/h2>\n<p>Andmed p\u00e4rinevad <a class=\"urllink\" href=\"http:\/\/www.stat.ee\/public\/apps\/nimed\/TOP\" target=\"_blank\" rel=\"noopener noreferrer\">statistikaameti populaarseimate nimede hulgast<\/a>.<\/p>\n<div>\n<p>&nbsp;<\/p>\n<p><span id=\"test6-tog\" class=\"toggle\"> <code><\/p>\n<div id=\"h5p-3\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-3\" class=\"h5p-iframe\" data-content-id=\"3\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"2dj\u00e4rjend-2-1-kaksk\u00fcs\"><\/iframe><\/div>\n<\/div>\n<p><\/code> <\/span><\/p>\n<h2>Erit\u00fc\u00fcbiliste elementidega j\u00e4rjendid<\/h2>\n<\/div>\n<p class=\"vspace\">Kuigi Python lubab hoida \u00fches j\u00e4rjendis mitut eri t\u00fc\u00fcpi v\u00e4\u00e4rtust, on see \u00fcpris veaohtlik, sest programmeerija peab siis meeles pidama, mis t\u00fc\u00fcpi v\u00e4\u00e4rtused kuskil asuvad. Kui v\u00f5imalik, siis on m\u00f5istlik p\u00fc\u00fcda hoida eri t\u00fc\u00fcpi v\u00e4\u00e4rtuseid erinevates j\u00e4rjendites.<\/p>\n<h2>Maatriks<\/h2>\n<p>Kui j\u00e4rjendis (v\u00f5i muus tabelis) on igas elemendis sama arv alamelemente (ehk tabeli igal real on sama arv v\u00e4\u00e4rtusi), nimetatakse seda struktuuri <strong>maatriksiks<\/strong>. Seda matemaatikast p\u00e4rinevat terminit kasutame ka edaspidi. L\u00e4hemalt v\u00f5id maatriksist lugeda j\u00e4rgnevast <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvaraarendus\/chapter\/lisalugemine-maatriks\/\">lisamaterjalide peat\u00fckist<\/a>.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"author":3,"menu_order":2,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-28","chapter","type-chapter","status-publish","hentry"],"part":25,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/28","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":1,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/28\/revisions"}],"predecessor-version":[{"id":29,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/28\/revisions\/29"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/parts\/25"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/28\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=28"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=28"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=28"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}