{"id":35,"date":"2019-02-27T08:26:42","date_gmt":"2019-02-27T08:26:42","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/?post_type=chapter&#038;p=35"},"modified":"2019-06-08T07:24:39","modified_gmt":"2019-06-08T07:24:39","slug":"lisalugemine-hulk","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/chapter\/lisalugemine-hulk\/","title":{"raw":"Lisalugemine: Hulk","rendered":"Lisalugemine: Hulk"},"content":{"raw":"<p class=\"vspace\">Veel \u00fcks Pythoni andmestruktuur, kuhu saab mitmeid elemente paigutada, on <strong>hulk<\/strong> (ingl <em>set<\/em>). Hulga t\u00e4histamiseks kasutatakse loogelisi sulgusid <code>{<\/code> ja <code>}<\/code>.<\/p>\r\n<p class=\"vspace\">Teise andmestruktuuri (nt j\u00e4rjendi v\u00f5i enniku) p\u00f5hjal saab hulga teha funktsiooniga <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">set<\/code><\/code>.<\/p>\r\n\r\n<div class=\"vspace\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">h1 = {8, 2, 3, 6, 7}\r\nh2 = set([6, 4, 5])\r\nh3 = set('Tere hommikust')<\/pre>\r\n<\/div>\r\n<div class=\"lrindent round\">\r\n\r\nT\u00fchja hulga loomiseks tuleb kasutada <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">set()<\/code><\/code>, sest t\u00fchjad loogelised sulud <code>{}<\/code> t\u00e4histavad hoopis t\u00fchja s\u00f5nastikku.\r\n<h2>Hulk ei ole j\u00e4rjestatud<\/h2>\r\n<p class=\"vspace\">Nagu matemaatilises hulgaski, pole Pythoni hulgas elementide j\u00e4rjekord oluline. Nii v\u00f5ib ka Python hulga elemendid teises j\u00e4rjekorras esitada, kui need sisestatud on.<\/p>\r\n\r\n<\/div>\r\n<div>\r\n<div class=\"syntaxhighlighter nogutter python\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; {8, 6, 4}\r\n{8, 4, 6}<\/pre>\r\n<\/div>\r\n<\/div>\r\n<p class=\"vspace\">See t\u00e4hendab ka muuhulgas, et kaks hulka on v\u00f5rdsed siis, kui nad sisaldavad samu elemente. Need ei pea olema samas j\u00e4rjekorras (tegelikult polegi hulga elementidel j\u00e4rjekorda).<\/p>\r\n\r\n<div>\r\n<div class=\"syntaxhighlighter nogutter python\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; {42, 11} == {11, 42}\r\nTrue<\/pre>\r\n<\/div>\r\n<\/div>\r\n<p class=\"vspace\">Kuna elementide j\u00e4rjekord pole m\u00e4\u00e4ratud, siis ei saa ka \u00fcksikut elementi indeksi abil k\u00e4tte. K\u00fcll aga saame <code>for<\/code>-ts\u00fckli abil hulga k\u00f5igi elementidega midagi ette v\u00f5tta, hoolimata sellest, \"mitmendat\" elementi hetkel k\u00e4sitleme:<\/p>\r\n\r\n<div class=\"vspace\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">for el in h3:\r\n    print(el)<\/pre>\r\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\r\n<\/div>\r\n<div>\r\n\r\n<code>[h5p id=\"17\"]<\/code>\r\n<h2>Hulgas ei ole korduvaid elemente<\/h2>\r\n<\/div>\r\n<p class=\"vspace\">Teine oluline hulga tunnus p\u00e4rineb samuti matemaatilistelt hulkadelt: hulgas ei ole korduvaid elemente. Kui p\u00fc\u00fcame elemente hulga sees korrata, siis arvestatakse neid ikkagi \u00fchekordselt.<\/p>\r\n\r\n<div class=\"vspace\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; {4, 6, 7, 4}\r\n{4, 6, 7}<\/pre>\r\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\r\n<\/div>\r\n<div>\r\n\r\n<span id=\"test2-tog\" class=\"toggle\"> <code>[h5p id=\"18\"]<\/code>\r\n<\/span>\r\n<h2>Hulgad on muudetavad<\/h2>\r\n<\/div>\r\n<p class=\"vspace\">Hulgad on muteeritavad: neid saab muuta elemente lisades ja eemaldades. Kui j\u00e4rjendi puhul oli elemendi juurde lisamiseks k\u00e4sk <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">append<\/code>, mis t\u00e4hendab l\u00f5ppu lisamist, siis hulgal pole \"l\u00f5ppu\" olemas ning lisamise k\u00e4su nimeks on <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">add<\/code>. See lisatakse sarnaselt <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">append<\/code><\/code>-ile hulga l\u00f5ppu punktiga:<\/p>\r\n\r\n<div class=\"vspace\"><\/div>\r\n<div>\r\n<div class=\"syntaxhighlighter nogutter python\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; h = {42, 11}\r\n&gt;&gt;&gt; h.add(10)\r\n&gt;&gt;&gt; h\r\n{10, 42, 11}<\/pre>\r\n<\/div>\r\n<\/div>\r\n<p class=\"vspace\">Veel m\u00f5ned hulkade peal t\u00f6\u00f6tavad k\u00e4sud on toodud j\u00e4rgmises tabelis:<\/p>\r\n\r\n<table border=\"1\">\r\n<tbody>\r\n<tr>\r\n<th>K\u00e4sk<\/th>\r\n<th>Selgitus<\/th>\r\n<\/tr>\r\n<tr>\r\n<td><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">h.remove(el)<\/code><\/code><\/td>\r\n<td align=\"left\">eemaldab elemendi <code>el<\/code> hulgast <code>h<\/code><\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">h.update(h1)<\/code><\/code><\/td>\r\n<td align=\"left\">t\u00e4iendab hulka <code>h<\/code> teise hulga <code>h1<\/code> elementidega<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">h.pop()<\/code><\/code><\/td>\r\n<td align=\"left\">eemaldab ja tagastab hulgast <code>h<\/code> (juhusliku) elemendi<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">h.clear()<\/code><\/code><\/td>\r\n<td align=\"left\">t\u00fchjendab hulga <code>h<\/code><\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">h.copy()<\/code><\/code><\/td>\r\n<td align=\"left\">tagastab hulga <code>h<\/code> koopia<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p class=\"vspace\">N\u00e4iteks vaatame, kuidas <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">remove<\/code><\/code> elemendi eemaldab:<\/p>\r\n\r\n<div class=\"vspace\"><\/div>\r\n<div>\r\n<div class=\"syntaxhighlighter nogutter python\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; h = {1, 5, 7, 3}\r\n&gt;&gt;&gt; h.remove(5)\r\n&gt;&gt;&gt; h\r\n{1, 3, 7}<\/pre>\r\n<\/div>\r\n<\/div>\r\n<p class=\"vspace\">Proovi k\u00e4ske ka ise!<\/p>\r\n\r\n<h2>Hulga suurus<\/h2>\r\n<p class=\"vspace\">Hulga suuruse saab leida sarnaselt j\u00e4rjendite ja ennikutega funktsiooniga <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">len<\/code><\/code>. Samuti saab hulgas sisalduvust kontrollida analoogselt:<\/p>\r\n\r\n<div class=\"vspace\"><\/div>\r\n<div>\r\n<div class=\"syntaxhighlighter nogutter python\">\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; h = {42, 11}\r\n&gt;&gt;&gt; len(h)\r\n2\r\n&gt;&gt;&gt; 42 in h\r\nTrue<\/pre>\r\n<h2>Veel operatsioone hulkadega<\/h2>\r\n<\/div>\r\n<\/div>\r\n<p class=\"vspace\">Paljud funktsioonid nagu <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">min<\/code><\/code> ja <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">max<\/code><\/code> t\u00f6\u00f6tavad hulkadega samamoodi nagu j\u00e4rjendite v\u00f5i ennikutega.<\/p>\r\n<p class=\"vspace\">Hulkadega saab ka selliseid operatsioone teha, mida j\u00e4rjendite v\u00f5i ennikutega ei saa. T\u00e4htsaimad neist on toodud j\u00e4rgnevas tabelis. K\u00f5ik need operatsioonid on binaarsed (kahekohalised) ja vastava operatsiooni m\u00e4rk tuleb panna kahe hulga vahele.<\/p>\r\n\r\n<table border=\"1\">\r\n<tbody>\r\n<tr>\r\n<th>Operatsioon<\/th>\r\n<th>Selgitus<\/th>\r\n<\/tr>\r\n<tr>\r\n<td align=\"left\"><code>&amp;<\/code><\/td>\r\n<td align=\"left\">\u00fchisosa ehk hulk elementidest, mida sisaldavad m\u00f5lemad hulgad<\/td>\r\n<\/tr>\r\n<tr>\r\n<td align=\"left\"><code>|<\/code><\/td>\r\n<td align=\"left\">\u00fchend ehk hulk elementidest, mida sisaldavad \u00fcks v\u00f5i teine v\u00f5i m\u00f5lemad hulgad<\/td>\r\n<\/tr>\r\n<tr>\r\n<td align=\"left\"><code>-<\/code><\/td>\r\n<td align=\"left\">vahe ehk hulk elementidest, mida sisaldab esimene, aga ei sisalda teine hulk<\/td>\r\n<\/tr>\r\n<tr>\r\n<td align=\"left\"><code>^<\/code><\/td>\r\n<td align=\"left\">s\u00fcmmeetriline vahe ehk hulk elementidest, mida sisaldavad \u00fcks v\u00f5i teine hulk, aga mitte m\u00f5lemad<\/td>\r\n<\/tr>\r\n<tr>\r\n<td align=\"left\"><code>&lt;<\/code><\/td>\r\n<td align=\"left\">on range alamhulk ehk kas esimene hulk on saadud teisest elemente eemaldades<\/td>\r\n<\/tr>\r\n<tr>\r\n<td align=\"left\"><code>&gt;<\/code><\/td>\r\n<td align=\"left\">on range \u00fclemhulk ehk kas teine hulk on saadud esimesest elemente eemaldades<\/td>\r\n<\/tr>\r\n<tr>\r\n<td align=\"left\"><code>&lt;=<\/code><\/td>\r\n<td align=\"left\">on mitterange alamhulk ehk kas esimene hulk on saadud teisest elemente eemaldades v\u00f5i sellega v\u00f5rdne<\/td>\r\n<\/tr>\r\n<tr>\r\n<td align=\"left\"><code>&gt;=<\/code><\/td>\r\n<td>on mitterange \u00fclemhulk ehk kas teine hulk on saadud esimesest elemente eemaldades v\u00f5i sellega v\u00f5rdne<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p class=\"vspace\">Proovi j\u00e4rgi, kuidas need operatsioonid t\u00f6\u00f6tavad!<\/p>\r\n\r\n<div class=\"vspace\">\r\n<h3>Enesekontroll (3 \u00fclesannet)<\/h3>\r\n<\/div>\r\n<div><\/div>\r\n<div>\r\n\r\n<code>[h5p id=\"19\"]<\/code>\r\n\r\n<\/div>","rendered":"<p class=\"vspace\">Veel \u00fcks Pythoni andmestruktuur, kuhu saab mitmeid elemente paigutada, on <strong>hulk<\/strong> (ingl <em>set<\/em>). Hulga t\u00e4histamiseks kasutatakse loogelisi sulgusid <code>{<\/code> ja <code>}<\/code>.<\/p>\n<p class=\"vspace\">Teise andmestruktuuri (nt j\u00e4rjendi v\u00f5i enniku) p\u00f5hjal saab hulga teha funktsiooniga <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">set<\/code><\/code>.<\/p>\n<div class=\"vspace\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">h1 = {8, 2, 3, 6, 7}\r\nh2 = set([6, 4, 5])\r\nh3 = set('Tere hommikust')<\/pre>\n<\/div>\n<div class=\"lrindent round\">\n<p>T\u00fchja hulga loomiseks tuleb kasutada <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">set()<\/code><\/code>, sest t\u00fchjad loogelised sulud <code>{}<\/code> t\u00e4histavad hoopis t\u00fchja s\u00f5nastikku.<\/p>\n<h2>Hulk ei ole j\u00e4rjestatud<\/h2>\n<p class=\"vspace\">Nagu matemaatilises hulgaski, pole Pythoni hulgas elementide j\u00e4rjekord oluline. Nii v\u00f5ib ka Python hulga elemendid teises j\u00e4rjekorras esitada, kui need sisestatud on.<\/p>\n<\/div>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; {8, 6, 4}\r\n{8, 4, 6}<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">See t\u00e4hendab ka muuhulgas, et kaks hulka on v\u00f5rdsed siis, kui nad sisaldavad samu elemente. Need ei pea olema samas j\u00e4rjekorras (tegelikult polegi hulga elementidel j\u00e4rjekorda).<\/p>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; {42, 11} == {11, 42}\r\nTrue<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">Kuna elementide j\u00e4rjekord pole m\u00e4\u00e4ratud, siis ei saa ka \u00fcksikut elementi indeksi abil k\u00e4tte. K\u00fcll aga saame <code>for<\/code>-ts\u00fckli abil hulga k\u00f5igi elementidega midagi ette v\u00f5tta, hoolimata sellest, &#8220;mitmendat&#8221; elementi hetkel k\u00e4sitleme:<\/p>\n<div class=\"vspace\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">for el in h3:\r\n    print(el)<\/pre>\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\n<\/div>\n<div>\n<p><code><\/p>\n<div id=\"h5p-17\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-17\" class=\"h5p-iframe\" data-content-id=\"17\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"andmestruktuurid-3-1-\u00fcksk\u00fcs\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h2>Hulgas ei ole korduvaid elemente<\/h2>\n<\/div>\n<p class=\"vspace\">Teine oluline hulga tunnus p\u00e4rineb samuti matemaatilistelt hulkadelt: hulgas ei ole korduvaid elemente. Kui p\u00fc\u00fcame elemente hulga sees korrata, siis arvestatakse neid ikkagi \u00fchekordselt.<\/p>\n<div class=\"vspace\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; {4, 6, 7, 4}\r\n{4, 6, 7}<\/pre>\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\n<\/div>\n<div>\n<p><span id=\"test2-tog\" class=\"toggle\"> <code><\/p>\n<div id=\"h5p-18\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-18\" class=\"h5p-iframe\" data-content-id=\"18\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"andmestruktuurid-3-2-\u00fcksk\u00fcs\"><\/iframe><\/div>\n<\/div>\n<p><\/code><br \/>\n<\/span><\/p>\n<h2>Hulgad on muudetavad<\/h2>\n<\/div>\n<p class=\"vspace\">Hulgad on muteeritavad: neid saab muuta elemente lisades ja eemaldades. Kui j\u00e4rjendi puhul oli elemendi juurde lisamiseks k\u00e4sk <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">append<\/code>, mis t\u00e4hendab l\u00f5ppu lisamist, siis hulgal pole &#8220;l\u00f5ppu&#8221; olemas ning lisamise k\u00e4su nimeks on <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">add<\/code>. See lisatakse sarnaselt <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">append<\/code><\/code>-ile hulga l\u00f5ppu punktiga:<\/p>\n<div class=\"vspace\"><\/div>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; h = {42, 11}\r\n&gt;&gt;&gt; h.add(10)\r\n&gt;&gt;&gt; h\r\n{10, 42, 11}<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">Veel m\u00f5ned hulkade peal t\u00f6\u00f6tavad k\u00e4sud on toodud j\u00e4rgmises tabelis:<\/p>\n<table>\n<tbody>\n<tr>\n<th>K\u00e4sk<\/th>\n<th>Selgitus<\/th>\n<\/tr>\n<tr>\n<td><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">h.remove(el)<\/code><\/code><\/td>\n<td align=\"left\">eemaldab elemendi <code>el<\/code> hulgast <code>h<\/code><\/td>\n<\/tr>\n<tr>\n<td><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">h.update(h1)<\/code><\/code><\/td>\n<td align=\"left\">t\u00e4iendab hulka <code>h<\/code> teise hulga <code>h1<\/code> elementidega<\/td>\n<\/tr>\n<tr>\n<td><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">h.pop()<\/code><\/code><\/td>\n<td align=\"left\">eemaldab ja tagastab hulgast <code>h<\/code> (juhusliku) elemendi<\/td>\n<\/tr>\n<tr>\n<td><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">h.clear()<\/code><\/code><\/td>\n<td align=\"left\">t\u00fchjendab hulga <code>h<\/code><\/td>\n<\/tr>\n<tr>\n<td><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">h.copy()<\/code><\/code><\/td>\n<td align=\"left\">tagastab hulga <code>h<\/code> koopia<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"vspace\">N\u00e4iteks vaatame, kuidas <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">remove<\/code><\/code> elemendi eemaldab:<\/p>\n<div class=\"vspace\"><\/div>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; h = {1, 5, 7, 3}\r\n&gt;&gt;&gt; h.remove(5)\r\n&gt;&gt;&gt; h\r\n{1, 3, 7}<\/pre>\n<\/div>\n<\/div>\n<p class=\"vspace\">Proovi k\u00e4ske ka ise!<\/p>\n<h2>Hulga suurus<\/h2>\n<p class=\"vspace\">Hulga suuruse saab leida sarnaselt j\u00e4rjendite ja ennikutega funktsiooniga <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">len<\/code><\/code>. Samuti saab hulgas sisalduvust kontrollida analoogselt:<\/p>\n<div class=\"vspace\"><\/div>\n<div>\n<div class=\"syntaxhighlighter nogutter python\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt; h = {42, 11}\r\n&gt;&gt;&gt; len(h)\r\n2\r\n&gt;&gt;&gt; 42 in h\r\nTrue<\/pre>\n<h2>Veel operatsioone hulkadega<\/h2>\n<\/div>\n<\/div>\n<p class=\"vspace\">Paljud funktsioonid nagu <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">min<\/code><\/code> ja <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">max<\/code><\/code> t\u00f6\u00f6tavad hulkadega samamoodi nagu j\u00e4rjendite v\u00f5i ennikutega.<\/p>\n<p class=\"vspace\">Hulkadega saab ka selliseid operatsioone teha, mida j\u00e4rjendite v\u00f5i ennikutega ei saa. T\u00e4htsaimad neist on toodud j\u00e4rgnevas tabelis. K\u00f5ik need operatsioonid on binaarsed (kahekohalised) ja vastava operatsiooni m\u00e4rk tuleb panna kahe hulga vahele.<\/p>\n<table>\n<tbody>\n<tr>\n<th>Operatsioon<\/th>\n<th>Selgitus<\/th>\n<\/tr>\n<tr>\n<td align=\"left\"><code>&amp;<\/code><\/td>\n<td align=\"left\">\u00fchisosa ehk hulk elementidest, mida sisaldavad m\u00f5lemad hulgad<\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><code>|<\/code><\/td>\n<td align=\"left\">\u00fchend ehk hulk elementidest, mida sisaldavad \u00fcks v\u00f5i teine v\u00f5i m\u00f5lemad hulgad<\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><code>-<\/code><\/td>\n<td align=\"left\">vahe ehk hulk elementidest, mida sisaldab esimene, aga ei sisalda teine hulk<\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><code>^<\/code><\/td>\n<td align=\"left\">s\u00fcmmeetriline vahe ehk hulk elementidest, mida sisaldavad \u00fcks v\u00f5i teine hulk, aga mitte m\u00f5lemad<\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><code>&lt;<\/code><\/td>\n<td align=\"left\">on range alamhulk ehk kas esimene hulk on saadud teisest elemente eemaldades<\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><code>&gt;<\/code><\/td>\n<td align=\"left\">on range \u00fclemhulk ehk kas teine hulk on saadud esimesest elemente eemaldades<\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><code>&lt;=<\/code><\/td>\n<td align=\"left\">on mitterange alamhulk ehk kas esimene hulk on saadud teisest elemente eemaldades v\u00f5i sellega v\u00f5rdne<\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><code>&gt;=<\/code><\/td>\n<td>on mitterange \u00fclemhulk ehk kas teine hulk on saadud esimesest elemente eemaldades v\u00f5i sellega v\u00f5rdne<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"vspace\">Proovi j\u00e4rgi, kuidas need operatsioonid t\u00f6\u00f6tavad!<\/p>\n<div class=\"vspace\">\n<h3>Enesekontroll (3 \u00fclesannet)<\/h3>\n<\/div>\n<div><\/div>\n<div>\n<p><code><\/p>\n<div id=\"h5p-19\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-19\" class=\"h5p-iframe\" data-content-id=\"19\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"andmestruktuurid-3-3-kolmk\u00fcs\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<\/div>\n","protected":false},"author":12,"menu_order":3,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-35","chapter","type-chapter","status-publish","hentry"],"part":28,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/pressbooks\/v2\/chapters\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/wp\/v2\/users\/12"}],"version-history":[{"count":6,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/pressbooks\/v2\/chapters\/35\/revisions"}],"predecessor-version":[{"id":232,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/pressbooks\/v2\/chapters\/35\/revisions\/232"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/pressbooks\/v2\/parts\/28"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/pressbooks\/v2\/chapters\/35\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/wp\/v2\/media?parent=35"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/pressbooks\/v2\/chapter-type?post=35"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/wp\/v2\/contributor?post=35"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara\/wp-json\/wp\/v2\/license?post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}