{"id":33,"date":"2019-03-03T16:44:54","date_gmt":"2019-03-03T16:44:54","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvaraarendus\/chapter\/jarjend-ja-tsukkel\/"},"modified":"2020-07-22T14:04:12","modified_gmt":"2020-07-22T14:04:12","slug":"jarjend-ja-tsukkel","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/jarjend-ja-tsukkel\/","title":{"raw":"J\u00e4rjend ja ts\u00fckkel","rendered":"J\u00e4rjend ja ts\u00fckkel"},"content":{"raw":"<h2 class=\"vspace\">J\u00e4rjend ts\u00fcklis<\/h2>\n<p class=\"vspace\">Kui maatriks on esitatud kahem\u00f5\u00f5tmelise j\u00e4rjendina, siis m\u00e4rkame, et maatriksi <strong>iga rida on omakorda eraldi j\u00e4rjend, veerg aga ei ole<\/strong>. Tegelikult saame isegi programmikoodis maatriksi ridu loetavalt v\u00e4lja tuua:<\/p>\n\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">tabel = [\n    [1, 2, 4],\n    [1, 5, 0]\n]<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">Kui see tabel ekraanile v\u00e4ljastada (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print(tabel)<\/code>), siis ilmub tabel \u00fchele reale pressituna:<\/p>\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"beyond\" data-enlighter-language=\"raw\">[[1, 2, 4], [1, 5, 0]]<\/pre>\n<p class=\"vspace\">Tabelikujulise v\u00e4ljundi jaoks v\u00f5ime v\u00e4ljastada ts\u00fckli abil iga rea eraldi:<\/p>\n<strong>N\u00e4iteprogramm. Kahem\u00f5\u00f5tmelise j\u00e4rjendi sisemiste j\u00e4rjendite printimine<\/strong>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\">tabel = [ [1, 2, 4], [1, 5, 0] ]\nfor rida in tabel:\n    print(rida)<\/pre>\n<\/div>\n<\/div>\nSee programm v\u00e4ljastab:\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"beyond\" data-enlighter-language=\"raw\">[1, 2, 4]\n[1, 5, 0]<\/pre>\n<p class=\"vspace\">Ts\u00fckli igal sammul v\u00e4ljastatakse \u00fcks rida j\u00e4rjendina ekraanile. Varasemast teame, et kui tahame iga elemendi \u00fckshaaval j\u00e4rjendist v\u00e4ljastada, siis seda saab teha ts\u00fckli abil nii:<\/p>\n\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">for element in rida:\n    print(element)<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">Need konstruktsioonid saab omavahel kokku panna nii, et iga rea korral v\u00e4ljastatakse k\u00f5ik selle rea elemendid \u00fckshaaval:<\/p>\n<strong>N\u00e4iteprogramm. Kahem\u00f5\u00f5tmelise j\u00e4rjendi sisemiste elementide printimine<\/strong>\n<pre class=\"EnlighterJSRAW\">tabel\u00a0=\u00a0[\u00a0[1,\u00a02,\u00a04],\u00a0[1,\u00a05,\u00a00]\u00a0]\nfor rida in tabel:\n    for element in rida:\n        print(element)<\/pre>\n<div class=\"lrindent round\">\n\nSee programm v\u00e4ljastab:\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"beyond\" data-enlighter-language=\"raw\">1\n2\n4\n1\n5\n0<\/pre>\nSiin teeb sisemine ts\u00fckkel kogu oma t\u00f6\u00f6 \u00e4ra igal v\u00e4limise ts\u00fckli sammul. Niimoodi kokku pandud ts\u00fckleid v\u00f5ib nimetada <em>kahekordseks ts\u00fckliks<\/em>.\n\n<\/div>\n<p class=\"vspace\">Eelmise n\u00e4iteprogrammi abil saame t\u00f5esti k\u00f5ik elemendid maatriksist (v\u00f5i kahekordsest j\u00e4rjendist) v\u00e4ljastada, kuid tegelikult ei ilmu nad ekraanile siiski tabelina. P\u00f5hjus on selles, et funktsioon <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code> v\u00e4ljastab p\u00e4rast igat v\u00e4ljakutset lisaks elemendile ka reavahetuse. Seda k\u00e4itumist saab muuta, kui anda <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code><\/code> funktsioonile <em>nimelise argumendina<\/em> nimega <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">end<\/code> ette s\u00f5ne, mis tuleb alati l\u00f5puks v\u00e4ljastada.<\/p>\n\n<div class=\"vspace\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">for rida in tabel:\n    for element in rida:\n        print(element, end=\" \")<\/pre>\n<\/div>\n<p class=\"vspace\">Selle programmijupi k\u00e4ivitamisel ilmuvad elementide vahele reavahetuste asemel t\u00fchikud. Samuti v\u00f5iks me <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">end=\" \"<\/code> asemel kirjutada n\u00e4iteks <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">end=\"\"<\/code><\/code>, et elementide vahele pandaks t\u00fchjad s\u00f5ned (ehk ei pandaks mitte midagi) v\u00f5i hoopis midagi muud - k\u00f5ik s\u00f5ned on sinna lubatud. Huvi korral saate rohkem lugeda funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code> v\u00f5imaluste kohta <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3\/library\/functions.html#print\" target=\"_blank\" rel=\"noopener noreferrer\">Pythoni dokumentatsioonist<\/a>.<\/p>\n<p class=\"vspace\">Sellist programmi k\u00e4ivitades ilmuvad elemendid k\u00fcll ilusate vahedega, kuid erinevate ridade elemendid v\u00e4ljastatakse ikkagi samale reale. Selle parandamiseks saame v\u00e4ljastada tavalise <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code><\/code> funktsiooniga \u00fche reavahetuse iga kord, kui minnakse elementide vaatamisel j\u00e4rgmise rea juurde:<\/p>\n\n<div class=\"vspace\"><strong>N\u00e4iteprogramm. Kahem\u00f5\u00f5tmelise j\u00e4rjendi ilus printimine<\/strong><\/div>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\">tabel\u00a0=\u00a0[\u00a0[1,\u00a02,\u00a04],\u00a0[1,\u00a05,\u00a00]\u00a0]\nfor rida in tabel:\n    for element in rida:\n        print(element, end=\" \")\n    print()<\/pre>\n<\/div>\n<\/div>\nSee programm v\u00e4ljastab:\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"beyond\" data-enlighter-language=\"raw\">1 2 4 \n1 5 0<\/pre>\n<p class=\"vspace\">Siin on reavahetust v\u00e4ljastav <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code> just v\u00e4limise ts\u00fckli sees, mitte sisemise. Nii rakendub see ainult siis, kui sisemine ts\u00fckkel on k\u00f5ik mingi rea elemendid (t\u00fchikutega eraldatult) v\u00e4ljastanud ja v\u00e4limisel ts\u00fcklil on aeg minna j\u00e4rgmise rea (v\u00e4limise ts\u00fckli uue sammu) juurde.<\/p>\n<p class=\"vspace\">Kui tahame arvestada ka asjaolu, et elemendid v\u00f5ivad tabelis olla erineva pikkusega, siis v\u00f5ib t\u00fchiku asemel kasutada tabulatsioonim\u00e4rki <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\"\\t\"<\/code><\/code> v\u00f5i huvi korral uurida k\u00e4su <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3\/library\/stdtypes.html#str.rjust\" target=\"_blank\" rel=\"noopener noreferrer\">rjust<\/a> kohta.<\/p>\n\n<h2 class=\"vspace\">Ts\u00fckkel ja indeksid<\/h2>\n<p class=\"vspace\">Eespool kasutasime Pythoni mugavaid <code>for<\/code>-ts\u00fckli v\u00f5imalusi, et j\u00e4rjendit elementhaaval l\u00e4bida ilma indeksite peale m\u00f5tlemata. Sageli on aga vaja tegeleda ainult teatud kohtadel paiknevate elementidega ja sellisel juhul on kasu indeksitest. J\u00e4rgmises programmis kasutame indekseid, et j\u00e4rjendist elemente k\u00e4tte saada:<\/p>\n<strong>N\u00e4iteprogramm. J\u00e4rjendi l\u00e4bimine indeksi p\u00f5hjal<\/strong>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">a = [1, 6, 3, 2, 1, 8, 3, 2]\n\nfor i in range(len(a)):\n    print(i)<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">Funktsiooni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">range<\/code><\/code> abil omandab ts\u00fcklimuutuja <code>i<\/code> j\u00e4rjest v\u00e4\u00e4rtusi l\u00f5igust <code>0<\/code> kuni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">len(a) - 1<\/code><\/code>. \u00a0Sellisel juhul saab muutuja <code>i<\/code> v\u00e4\u00e4rtuseks j\u00e4rjest <code>0<\/code>, <code>1<\/code>, <code>2<\/code>, <code>3<\/code>, <code>4<\/code>, <code>5<\/code>, <code>6<\/code> ja <code>7<\/code>.<\/p>\n\n<div class=\"vspace\"><\/div>\n<div class=\"lrindent round\">\n\nV\u00e4ga oluline on siin vahet teha indeksil <code>i<\/code> ja vastaval elemendil <code>a[i]<\/code>. J\u00e4rgmistes enenekontrollik\u00fcsimustes tuleb t\u00e4helepanelikult vaadata, milliseid v\u00e4\u00e4rtusi <code>i<\/code> omandab.\n\n<\/div>\n<div>\n<h3>Enesekontroll (2 \u00fclesannet)<\/h3>\n<code>[h5p id=\"5\"]<\/code>\n\n<\/div>\n<h2 class=\"vspace\">Kahekordne ts\u00fckkel ja indeksid<\/h2>\n<p class=\"vspace\">Samuti saame indeksite abil l\u00e4bida kahekordseid j\u00e4rjendeid. Siis v\u00f5etakse sageli (aga mitte kohustuslikult) ts\u00fcklimuutujateks <code>i<\/code> ja <code>j<\/code>. Tabeli v\u00e4ljastamise saaksime indeksite abiga teha nii:<\/p>\n\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">for i in range(len(tabel)):\n    for j in range(len(tabel[i])):\n        print(tabel[i][j], end=\" \")\n    print()<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">V\u00e4limine ts\u00fckkel k\u00e4ib ikka ridahaaval, <code>i<\/code> saab v\u00e4\u00e4rtusi l\u00f5igust <code>0 <\/code>kuni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">len(tabel)-1<\/code><\/code>. Sisemine ts\u00fckkel v\u00f5tab tol hetkel vaadeldava rea (<code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">tabel[i]<\/code><\/code>) elemente (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">tabel[i][j]<\/code>) vastavalt <code>j<\/code> v\u00e4\u00e4rtustele, j\u00e4rjest <code>0<\/code> kuni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">len(tabel[i])-1<\/code><\/code>. See programm t\u00f6\u00f6tab ka siis, kui read ei ole \u00fchepikkused - iga rea korral muutub <code>j<\/code> just vastavalt konkreetse rea pikkusele.<\/p>\n\n<h3 class=\"vspace\">Enesekontroll (1 \u00fclesanne)<\/h3>\n<code>[h5p id=\"6\"]<\/code>\n<p class=\"vspace\">Vahel on vaja teada, kus teatud tingimustele vastav element paikneb. J\u00e4rgmine programm v\u00e4ljastab ekraanile negatiivsete arvude asukohad (indeksid):<\/p>\n<strong>N\u00e4iteprogramm. Negatiivsete arvude indeksid<\/strong>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">tabel = [[1, -4, 5], [-4, 6, 7], [5, 6, -7]]\nfor i in range(len(tabel)): # ridade kaupa\n    for j in range(len(tabel[i])): # selle rea elementide kaupa\n        if tabel[i][j] &lt; 0:\n            print(\"Negatiivne arv \" + str(tabel[i][j]) +\n                  \" on kohal (\" + str(i) + \"; \" + str(j) + \").\")<\/pre>\n<h3 class=\"vspace\">Enesekontroll (2 \u00fclesannet)<\/h3>\n<code>[h5p id=\"7\"]<\/code>","rendered":"<h2 class=\"vspace\">J\u00e4rjend ts\u00fcklis<\/h2>\n<p class=\"vspace\">Kui maatriks on esitatud kahem\u00f5\u00f5tmelise j\u00e4rjendina, siis m\u00e4rkame, et maatriksi <strong>iga rida on omakorda eraldi j\u00e4rjend, veerg aga ei ole<\/strong>. Tegelikult saame isegi programmikoodis maatriksi ridu loetavalt v\u00e4lja tuua:<\/p>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">tabel = [\n    [1, 2, 4],\n    [1, 5, 0]\n]<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">Kui see tabel ekraanile v\u00e4ljastada (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print(tabel)<\/code>), siis ilmub tabel \u00fchele reale pressituna:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"beyond\" data-enlighter-language=\"raw\">[[1, 2, 4], [1, 5, 0]]<\/pre>\n<p class=\"vspace\">Tabelikujulise v\u00e4ljundi jaoks v\u00f5ime v\u00e4ljastada ts\u00fckli abil iga rea eraldi:<\/p>\n<p><strong>N\u00e4iteprogramm. Kahem\u00f5\u00f5tmelise j\u00e4rjendi sisemiste j\u00e4rjendite printimine<\/strong><\/p>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\">tabel = [ [1, 2, 4], [1, 5, 0] ]\nfor rida in tabel:\n    print(rida)<\/pre>\n<\/div>\n<\/div>\n<p>See programm v\u00e4ljastab:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"beyond\" data-enlighter-language=\"raw\">[1, 2, 4]\n[1, 5, 0]<\/pre>\n<p class=\"vspace\">Ts\u00fckli igal sammul v\u00e4ljastatakse \u00fcks rida j\u00e4rjendina ekraanile. Varasemast teame, et kui tahame iga elemendi \u00fckshaaval j\u00e4rjendist v\u00e4ljastada, siis seda saab teha ts\u00fckli abil nii:<\/p>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">for element in rida:\n    print(element)<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">Need konstruktsioonid saab omavahel kokku panna nii, et iga rea korral v\u00e4ljastatakse k\u00f5ik selle rea elemendid \u00fckshaaval:<\/p>\n<p><strong>N\u00e4iteprogramm. Kahem\u00f5\u00f5tmelise j\u00e4rjendi sisemiste elementide printimine<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">tabel\u00a0=\u00a0[\u00a0[1,\u00a02,\u00a04],\u00a0[1,\u00a05,\u00a00]\u00a0]\nfor rida in tabel:\n    for element in rida:\n        print(element)<\/pre>\n<div class=\"lrindent round\">\n<p>See programm v\u00e4ljastab:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"beyond\" data-enlighter-language=\"raw\">1\n2\n4\n1\n5\n0<\/pre>\n<p>Siin teeb sisemine ts\u00fckkel kogu oma t\u00f6\u00f6 \u00e4ra igal v\u00e4limise ts\u00fckli sammul. Niimoodi kokku pandud ts\u00fckleid v\u00f5ib nimetada <em>kahekordseks ts\u00fckliks<\/em>.<\/p>\n<\/div>\n<p class=\"vspace\">Eelmise n\u00e4iteprogrammi abil saame t\u00f5esti k\u00f5ik elemendid maatriksist (v\u00f5i kahekordsest j\u00e4rjendist) v\u00e4ljastada, kuid tegelikult ei ilmu nad ekraanile siiski tabelina. P\u00f5hjus on selles, et funktsioon <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code> v\u00e4ljastab p\u00e4rast igat v\u00e4ljakutset lisaks elemendile ka reavahetuse. Seda k\u00e4itumist saab muuta, kui anda <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code><\/code> funktsioonile <em>nimelise argumendina<\/em> nimega <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">end<\/code> ette s\u00f5ne, mis tuleb alati l\u00f5puks v\u00e4ljastada.<\/p>\n<div class=\"vspace\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">for rida in tabel:\n    for element in rida:\n        print(element, end=\" \")<\/pre>\n<\/div>\n<p class=\"vspace\">Selle programmijupi k\u00e4ivitamisel ilmuvad elementide vahele reavahetuste asemel t\u00fchikud. Samuti v\u00f5iks me <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">end=\" \"<\/code> asemel kirjutada n\u00e4iteks <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">end=\"\"<\/code><\/code>, et elementide vahele pandaks t\u00fchjad s\u00f5ned (ehk ei pandaks mitte midagi) v\u00f5i hoopis midagi muud &#8211; k\u00f5ik s\u00f5ned on sinna lubatud. Huvi korral saate rohkem lugeda funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code> v\u00f5imaluste kohta <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3\/library\/functions.html#print\" target=\"_blank\" rel=\"noopener noreferrer\">Pythoni dokumentatsioonist<\/a>.<\/p>\n<p class=\"vspace\">Sellist programmi k\u00e4ivitades ilmuvad elemendid k\u00fcll ilusate vahedega, kuid erinevate ridade elemendid v\u00e4ljastatakse ikkagi samale reale. Selle parandamiseks saame v\u00e4ljastada tavalise <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code><\/code> funktsiooniga \u00fche reavahetuse iga kord, kui minnakse elementide vaatamisel j\u00e4rgmise rea juurde:<\/p>\n<div class=\"vspace\"><strong>N\u00e4iteprogramm. Kahem\u00f5\u00f5tmelise j\u00e4rjendi ilus printimine<\/strong><\/div>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\">tabel\u00a0=\u00a0[\u00a0[1,\u00a02,\u00a04],\u00a0[1,\u00a05,\u00a00]\u00a0]\nfor rida in tabel:\n    for element in rida:\n        print(element, end=\" \")\n    print()<\/pre>\n<\/div>\n<\/div>\n<p>See programm v\u00e4ljastab:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"beyond\" data-enlighter-language=\"raw\">1 2 4 \n1 5 0<\/pre>\n<p class=\"vspace\">Siin on reavahetust v\u00e4ljastav <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code> just v\u00e4limise ts\u00fckli sees, mitte sisemise. Nii rakendub see ainult siis, kui sisemine ts\u00fckkel on k\u00f5ik mingi rea elemendid (t\u00fchikutega eraldatult) v\u00e4ljastanud ja v\u00e4limisel ts\u00fcklil on aeg minna j\u00e4rgmise rea (v\u00e4limise ts\u00fckli uue sammu) juurde.<\/p>\n<p class=\"vspace\">Kui tahame arvestada ka asjaolu, et elemendid v\u00f5ivad tabelis olla erineva pikkusega, siis v\u00f5ib t\u00fchiku asemel kasutada tabulatsioonim\u00e4rki <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\"\\t\"<\/code><\/code> v\u00f5i huvi korral uurida k\u00e4su <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3\/library\/stdtypes.html#str.rjust\" target=\"_blank\" rel=\"noopener noreferrer\">rjust<\/a> kohta.<\/p>\n<h2 class=\"vspace\">Ts\u00fckkel ja indeksid<\/h2>\n<p class=\"vspace\">Eespool kasutasime Pythoni mugavaid <code>for<\/code>-ts\u00fckli v\u00f5imalusi, et j\u00e4rjendit elementhaaval l\u00e4bida ilma indeksite peale m\u00f5tlemata. Sageli on aga vaja tegeleda ainult teatud kohtadel paiknevate elementidega ja sellisel juhul on kasu indeksitest. J\u00e4rgmises programmis kasutame indekseid, et j\u00e4rjendist elemente k\u00e4tte saada:<\/p>\n<p><strong>N\u00e4iteprogramm. J\u00e4rjendi l\u00e4bimine indeksi p\u00f5hjal<\/strong><\/p>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">a = [1, 6, 3, 2, 1, 8, 3, 2]\n\nfor i in range(len(a)):\n    print(i)<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">Funktsiooni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">range<\/code><\/code> abil omandab ts\u00fcklimuutuja <code>i<\/code> j\u00e4rjest v\u00e4\u00e4rtusi l\u00f5igust <code>0<\/code> kuni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">len(a) - 1<\/code><\/code>. \u00a0Sellisel juhul saab muutuja <code>i<\/code> v\u00e4\u00e4rtuseks j\u00e4rjest <code>0<\/code>, <code>1<\/code>, <code>2<\/code>, <code>3<\/code>, <code>4<\/code>, <code>5<\/code>, <code>6<\/code> ja <code>7<\/code>.<\/p>\n<div class=\"vspace\"><\/div>\n<div class=\"lrindent round\">\n<p>V\u00e4ga oluline on siin vahet teha indeksil <code>i<\/code> ja vastaval elemendil <code>a[i]<\/code>. J\u00e4rgmistes enenekontrollik\u00fcsimustes tuleb t\u00e4helepanelikult vaadata, milliseid v\u00e4\u00e4rtusi <code>i<\/code> omandab.<\/p>\n<\/div>\n<div>\n<h3>Enesekontroll (2 \u00fclesannet)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-5\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-5\" class=\"h5p-iframe\" data-content-id=\"5\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"2xts\u00fckkel-1-1-kaksk\u00fcs\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<\/div>\n<h2 class=\"vspace\">Kahekordne ts\u00fckkel ja indeksid<\/h2>\n<p class=\"vspace\">Samuti saame indeksite abil l\u00e4bida kahekordseid j\u00e4rjendeid. Siis v\u00f5etakse sageli (aga mitte kohustuslikult) ts\u00fcklimuutujateks <code>i<\/code> ja <code>j<\/code>. Tabeli v\u00e4ljastamise saaksime indeksite abiga teha nii:<\/p>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">for i in range(len(tabel)):\n    for j in range(len(tabel[i])):\n        print(tabel[i][j], end=\" \")\n    print()<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">V\u00e4limine ts\u00fckkel k\u00e4ib ikka ridahaaval, <code>i<\/code> saab v\u00e4\u00e4rtusi l\u00f5igust <code>0 <\/code>kuni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">len(tabel)-1<\/code><\/code>. Sisemine ts\u00fckkel v\u00f5tab tol hetkel vaadeldava rea (<code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">tabel[i]<\/code><\/code>) elemente (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">tabel[i][j]<\/code>) vastavalt <code>j<\/code> v\u00e4\u00e4rtustele, j\u00e4rjest <code>0<\/code> kuni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">len(tabel[i])-1<\/code><\/code>. See programm t\u00f6\u00f6tab ka siis, kui read ei ole \u00fchepikkused &#8211; iga rea korral muutub <code>j<\/code> just vastavalt konkreetse rea pikkusele.<\/p>\n<h3 class=\"vspace\">Enesekontroll (1 \u00fclesanne)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-6\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-6\" class=\"h5p-iframe\" data-content-id=\"6\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"2xts\u00fckkel-1-2-\u00fcksk\u00fcs\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<p class=\"vspace\">Vahel on vaja teada, kus teatud tingimustele vastav element paikneb. J\u00e4rgmine programm v\u00e4ljastab ekraanile negatiivsete arvude asukohad (indeksid):<\/p>\n<p><strong>N\u00e4iteprogramm. Negatiivsete arvude indeksid<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">tabel = [[1, -4, 5], [-4, 6, 7], [5, 6, -7]]\nfor i in range(len(tabel)): # ridade kaupa\n    for j in range(len(tabel[i])): # selle rea elementide kaupa\n        if tabel[i][j] &lt; 0:\n            print(\"Negatiivne arv \" + str(tabel[i][j]) +\n                  \" on kohal (\" + str(i) + \"; \" + str(j) + \").\")<\/pre>\n<h3 class=\"vspace\">Enesekontroll (2 \u00fclesannet)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-7\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-7\" class=\"h5p-iframe\" data-content-id=\"7\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"2xts\u00fckkel-1-3-kaksk\u00fcs\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n","protected":false},"author":3,"menu_order":1,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-33","chapter","type-chapter","status-publish","hentry"],"part":32,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/33","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\/33\/revisions"}],"predecessor-version":[{"id":34,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/33\/revisions\/34"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/parts\/32"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/33\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=33"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=33"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=33"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}