Seznamy

Vedle řetězců a celých čísel má Python další druhy hodnot.

Teď se podíváme na jeden, který se nazývá seznam (anglicky list). To je hodnota, která v sobě obsahuje jiné hodnoty.

Seznamy se zadávají tak, že dáš několik hodnot, oddělených čárkami, do hranatých závorek. Zkus si vytvořit třeba seznam čísel z loterie:

>>> [3, 42, 12, 19, 30, 59]
[3, 42, 12, 19, 30, 59]

Abys s takovým seznamem mohla pracovat, ulož si ho do proměnné:

>>> loterie = [3, 42, 12, 19, 30, 59]

Dobrá, máme seznam! Co s ním můžeme dělat? Podíváme se, kolik čísel v seznamu je. Dá se na to použít funkce, kterou už znáš. Tipneš si, která to je?

Řešení

Teď si zkus seznam seřadit. Na to existuje metoda sort:

>>> loterie.sort()

Tato metoda nic nevrátí, ale „potichu“ změní pořadí čísel v seznamu. Znovu si ho vypiš, ať vidíš co se stalo:

>>> loterie
[3, 12, 19, 30, 42, 59]

Čísla v seznamu jsou nyní seřazena od nejnižší k nejvyšší hodnotě.

Podobně funguje metoda reverse, která obrátí pořadí prvků. Vyzkoušej si ji!

>>> loterie.reverse()
>>> loterie
[59, 42, 30, 19, 12, 3]

Přidávání do seznamu

Podobně jako u řetězců se seznamy dají spojovat pomocí +:

>>> loterie + [5, 6, 7, 8]
[59, 42, 30, 19, 12, 3, 5, 6, 7, 8]

Tím se vytvoří nový seznam, ten původní zůstává nezměněný:

>>> loterie
[59, 42, 30, 19, 12, 3]

Pokud chceš něco přidat do původního seznamu, můžeš to provést pomocí metody append. Ale pozor! Tahle metoda potřebuje vědět co má do seznamu přidat. Nová hodnota se zadává do závorek:

>>> loterie.append(199)

Metoda opět nic nevrací, takže je potřeba seznam pro kontrolu vypsat:

>>> loterie
[59, 42, 30, 19, 12, 3, 199]

Vybírání prvků

Když se budeš chtít na jednu věc ze seznamu podívat podrobněji, přijde vhod možnost vybrat si konkrétní prvek. Na to se v Pythonu používají hranaté závorky.

Chceš-li vybrat prvek, zadej jméno seznamu a hned za ním hranaté závorky s pořadovým číslem prvku, který chceš:

>>> loterie[1]

Dostaneš první prvek?

Řešení

Číslu prvku se také říká index a procesu vybírání prvků indexování.

Zkus si indexování s dalšími indexy: 3, 100, 7, -1, -2, -6 nebo -100. Pokus se předpovědět výsledek před zadáním příkazu. Jak ti to půjde?

Řešení

Odstraňování

Chceš-li ze seznamu něco odstranit, můžeš opět použít indexy. Tentokrát s příkazem del. Následujícím kódem odstraň počáteční číslo seznamu, tedy prvek číslo 0:

>>> del loterie[0]

Pak si seznam opět vypiš. Kousek chybí!

>>> loterie
[42, 30, 19, 12, 3, 199]

Zkusíš odstranit poslední prvek?

Řešení

Občase se stane, že nechceš smazat prvek podle pozice, ale podle toho, co v seznamu je. K tomu slouží hodnota remove, která najde a odstraní danou hodnotu:

>>> loterie
[42, 3]
>>> loterie.remove(3)
>>> loterie
[42]

Řezání

Ze seznamu se dá kromě jednoho prvku vybrat i prvků několik – část seznamu, takzvaný podseznam.

Pojďme si opět udělat delší seznam čísel:

>>> cisla = ["První", "Druhý", "Třetí", "Čtvrtý"]

Budeš-li chtít vybrat prvky od druhého dál, dej do hranatých závorek číslo tohohle prvku, a za něj dvojtečku.

>>> cisla[1]
'Druhý'
>>> cisla[1:]
['Druhý', 'Třetí"', 'Čtvrtý']

Vybráním podseznamu se seznam nemění, tak můžeš vybírat dál:

>>> cisla
['První', 'Druhý', 'Třetí', 'Čtvrtý']
>>> cisla[1:]
['Druhý', 'Třetí"', 'Čtvrtý']
>>> cisla[2:]
['Třetí', 'Čtvrtý']
>>> cisla[3:]
['Čtvrtý']
>>> cisla[4:]
[]

Budeš-li chtít vybrat prvky od začátku do některého prvku, dej dvojtečku před číslo prvku, který už ve výsledku nechceš

>>> cisla[2]
'Třetí'
>>> cisla[:2]
['První', 'Druhý']

Úkol: máš-li nějaký seznam, jak z něj vybereš všechny prvky kromě posledního?

Řešení

Začátek a konec se dá kombinovat – číslo můžeš dát před i za dvojtečku:

>>> cisla
['První', 'Druhý', 'Třetí', 'Čtvrtý']
>>> cisla[1:-1]
['Druhý', 'Třetí']

Řezání funguje i pro příkaz del. Zkus vymazat prostřední dvě čísla:

>>> cisla
['První', 'Druhý', 'Třetí', 'Čtvrtý']
>>> del cisla[1:-1]
>>> cisla
['První', 'Čtvrtý']

Řezání řetězců

Hranaté závorky fungují i u řetězců, kde vybírají písmenka:

>>> jidlo = 'čokoláda'
>>> jidlo[3]
'o'
>>> jidlo[1:4]
'oko'

Představ si, že máš v proměnné jmeno ženské jméno jako 'Ola', 'Krystýna' nebo 'Růžena'. Jak z něj vytvoříš druhý pád (např. bez 'Růženy')?

Řešení

Shrnutí

Uf! O seznamech toho bylo k naučení celkem hodně. Shrňme si, co už umíš:

  • Seznam je seřazená sekvence hodnot.
  • Pomocí metod se seznam dá řadit (sort) a obrátit (reverse), nebo se do něj dá přidat (append) či odebrat (remove) prvek.
  • Prvky se dají vybrat nebo odstranit (del) podle indexu.
  • Číslování začíná od nuly, záporná čísla berou prvky od konce.
  • Podseznam je určitá část seznamu.
  • U řetězců funguje vybírání prvků a podřetězců podobně

Jsi připravena na další část?

{
  "data": {
    "sessionMaterial": {
      "id": "session-material:2019/brno-jaro-snake:intro:5",
      "title": "Seznamy",
      "html": "\n          \n    \n\n    <h1>Seznamy</h1>\n<p>Vedle &#x159;et&#x11B;zc&#x16F; a cel&#xFD;ch &#x10D;&#xED;sel m&#xE1; Python dal&#x161;&#xED; druhy hodnot.</p>\n<p>Te&#x10F; se pod&#xED;v&#xE1;me na jeden, kter&#xFD; se naz&#xFD;v&#xE1; <em>seznam</em> (anglicky <em>list</em>).\nTo je hodnota, kter&#xE1; v&#xA0;sob&#x11B; obsahuje jin&#xE9; hodnoty.</p>\n<p>Seznamy se zad&#xE1;vaj&#xED; tak, &#x17E;e d&#xE1;&#x161; n&#x11B;kolik hodnot, odd&#x11B;len&#xFD;ch &#x10D;&#xE1;rkami,\ndo hranat&#xFD;ch z&#xE1;vorek.\nZkus si vytvo&#x159;it t&#x159;eba seznam &#x10D;&#xED;sel z&#xA0;loterie:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">42</span><span class=\"p\">,</span> <span class=\"mi\">12</span><span class=\"p\">,</span> <span class=\"mi\">19</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">59</span><span class=\"p\">]</span>\n<span class=\"go\">[3, 42, 12, 19, 30, 59]</span>\n</pre></div><p>Abys s&#xA0;takov&#xFD;m seznamem mohla pracovat,\nulo&#x17E; si ho do prom&#x11B;nn&#xE9;:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">42</span><span class=\"p\">,</span> <span class=\"mi\">12</span><span class=\"p\">,</span> <span class=\"mi\">19</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">59</span><span class=\"p\">]</span>\n</pre></div><p>Dobr&#xE1;, m&#xE1;me seznam! Co s n&#xED;m m&#x16F;&#x17E;eme d&#x11B;lat?\nPod&#xED;v&#xE1;me se, kolik &#x10D;&#xED;sel v&#xA0;seznamu je.\nD&#xE1; se na to pou&#x17E;&#xED;t funkce, kterou u&#x17E; zn&#xE1;&#x161;.\nTipne&#x161; si, kter&#xE1; to je?</p>\n<div class=\"solution\" id=\"solution-0\">\n    <h3>&#x158;e&#x161;en&#xED;</h3>\n    <div class=\"solution-cover\">\n        <a href=\"/2019/brno-jaro-snake/fast-track/list/index/solutions/0/\"><span class=\"link-text\">Uk&#xE1;zat &#x159;e&#x161;en&#xED;</span></a>\n    </div>\n    <div class=\"solution-body\" aria-hidden=\"true\">\n        <div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"n\">loterie</span><span class=\"p\">)</span>\n<span class=\"go\">6</span>\n</pre></div><p>Funkce <code>len()</code> um&#xED; zjistit nejen d&#xE9;lku &#x159;et&#x11B;zce, ale i d&#xE9;lku seznamu &#x2013; tedy\npo&#x10D;et jeho prvk&#x16F;.</p>\n    </div>\n</div><p>Te&#x10F; si zkus seznam se&#x159;adit. Na to existuje metoda <code>sort</code>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"o\">.</span><span class=\"n\">sort</span><span class=\"p\">()</span>\n</pre></div><p>Tato metoda nic nevr&#xE1;t&#xED;, ale &#x201E;potichu&#x201C; zm&#x11B;n&#xED; po&#x159;ad&#xED; &#x10D;&#xED;sel v seznamu.\nZnovu si ho vypi&#x161;, a&#x165; vid&#xED;&#x161; co se stalo:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[3, 12, 19, 30, 42, 59]</span>\n</pre></div><p>&#x10C;&#xED;sla v seznamu jsou nyn&#xED; se&#x159;azena od nejni&#x17E;&#x161;&#xED; k&#xA0;nejvy&#x161;&#x161;&#xED; hodnot&#x11B;.</p>\n<p>Podobn&#x11B; funguje metoda <code>reverse</code>, kter&#xE1; obr&#xE1;t&#xED; po&#x159;ad&#xED; prvk&#x16F;.\nVyzkou&#x161;ej si ji!</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"o\">.</span><span class=\"n\">reverse</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[59, 42, 30, 19, 12, 3]</span>\n</pre></div><h2>P&#x159;id&#xE1;v&#xE1;n&#xED; do seznamu</h2>\n<p>Podobn&#x11B; jako u &#x159;et&#x11B;zc&#x16F; se seznamy daj&#xED; spojovat pomoc&#xED; <code>+</code>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span> <span class=\"o\">+</span> <span class=\"p\">[</span><span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">7</span><span class=\"p\">,</span> <span class=\"mi\">8</span><span class=\"p\">]</span>\n<span class=\"go\">[59, 42, 30, 19, 12, 3, 5, 6, 7, 8]</span>\n</pre></div><p>T&#xED;m se vytvo&#x159;&#xED; nov&#xFD; seznam, ten p&#x16F;vodn&#xED; z&#x16F;st&#xE1;v&#xE1; nezm&#x11B;n&#x11B;n&#xFD;:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[59, 42, 30, 19, 12, 3]</span>\n</pre></div><p>Pokud chce&#x161; n&#x11B;co p&#x159;idat do p&#x16F;vodn&#xED;ho seznamu, m&#x16F;&#x17E;e&#x161; to prov&#xE9;st pomoc&#xED; metody\n<code>append</code>.\nAle pozor! Tahle metoda pot&#x159;ebuje v&#x11B;d&#x11B;t co m&#xE1; do seznamu p&#x159;idat.\nNov&#xE1; hodnota se zad&#xE1;v&#xE1; do z&#xE1;vorek:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"o\">.</span><span class=\"n\">append</span><span class=\"p\">(</span><span class=\"mi\">199</span><span class=\"p\">)</span>\n</pre></div><p>Metoda op&#x11B;t nic nevrac&#xED;, tak&#x17E;e je pot&#x159;eba seznam pro kontrolu vypsat:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[59, 42, 30, 19, 12, 3, 199]</span>\n</pre></div><h2>Vyb&#xED;r&#xE1;n&#xED; prvk&#x16F;</h2>\n<p>Kdy&#x17E; se bude&#x161; cht&#xED;t na jednu v&#x11B;c ze seznamu pod&#xED;vat podrobn&#x11B;ji,\np&#x159;ijde vhod mo&#x17E;nost vybrat si konkr&#xE9;tn&#xED; prvek.\nNa to se v&#xA0;Pythonu pou&#x17E;&#xED;vaj&#xED; hranat&#xE9; z&#xE1;vorky.</p>\n<p>Chce&#x161;-li vybrat prvek, zadej jm&#xE9;no seznamu a hned za n&#xED;m hranat&#xE9; z&#xE1;vorky\ns&#xA0;po&#x159;adov&#xFD;m &#x10D;&#xED;slem prvku, kter&#xFD; chce&#x161;:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span>\n</pre></div><p>Dostane&#x161; prvn&#xED; prvek?</p>\n<div class=\"solution\" id=\"solution-1\">\n    <h3>&#x158;e&#x161;en&#xED;</h3>\n    <div class=\"solution-cover\">\n        <a href=\"/2019/brno-jaro-snake/fast-track/list/index/solutions/1/\"><span class=\"link-text\">Uk&#xE1;zat &#x159;e&#x161;en&#xED;</span></a>\n    </div>\n    <div class=\"solution-body\" aria-hidden=\"true\">\n        <div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[59, 42, 30, 19, 12, 3, 199]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span>\n<span class=\"go\">42</span>\n</pre></div><p>Ne, dostane&#x161; druh&#xFD; prvek.</p>\n<p>Program&#xE1;to&#x159;i po&#x10D;&#xED;taj&#xED; od nuly.\nChce&#x161; li tedy prvn&#xED; prvek, popros Python o prvek &#x10D;&#xED;slo nula:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n<span class=\"go\">42</span>\n</pre></div><p>Je to zpo&#x10D;&#xE1;tku divn&#xE9;, ale d&#xE1; se na to zvyknout.</p>\n    </div>\n</div><p>&#x10C;&#xED;slu prvku se tak&#xE9; &#x159;&#xED;k&#xE1; <em>index</em> a procesu vyb&#xED;r&#xE1;n&#xED; prvk&#x16F; <em>indexov&#xE1;n&#xED;</em>.</p>\n<p>Zkus si indexov&#xE1;n&#xED; s dal&#x161;&#xED;mi indexy: 3, 100, 7, -1, -2, -6 nebo -100.\nPokus se p&#x159;edpov&#x11B;d&#x11B;t v&#xFD;sledek p&#x159;ed zad&#xE1;n&#xED;m p&#x159;&#xED;kazu.\nJak ti to p&#x16F;jde?</p>\n<div class=\"solution\" id=\"solution-2\">\n    <h3>&#x158;e&#x161;en&#xED;</h3>\n    <div class=\"solution-cover\">\n        <a href=\"/2019/brno-jaro-snake/fast-track/list/index/solutions/2/\"><span class=\"link-text\">Uk&#xE1;zat &#x159;e&#x161;en&#xED;</span></a>\n    </div>\n    <div class=\"solution-body\" aria-hidden=\"true\">\n        <div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[59, 42, 30, 19, 12, 3, 199]</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">]</span>\n<span class=\"go\">19</span>\n</pre></div><p>Index 3 ozna&#x10D;uje &#x10D;tvrt&#xFD; prvek.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"mi\">7</span><span class=\"p\">]</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n  File <span class=\"nb\">&quot;&lt;stdin&gt;&quot;</span>, line <span class=\"m\">1</span>, in <span class=\"n\">&lt;module&gt;</span>\n<span class=\"gr\">IndexError</span>: <span class=\"n\">list index out of range</span>\n</pre></div><p>Prvek s&#xA0;indexem 100 v&#xA0;seznamu nen&#xED; &#x2013; nastane chyba.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"mi\">1000</span><span class=\"p\">]</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n  File <span class=\"nb\">&quot;&lt;stdin&gt;&quot;</span>, line <span class=\"m\">1</span>, in <span class=\"n\">&lt;module&gt;</span>\n<span class=\"gr\">IndexError</span>: <span class=\"n\">list index out of range</span>\n</pre></div><p>Prvek s&#xA0;indexem 7 v&#xA0;seznamu taky nen&#xED;.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"o\">-</span><span class=\"mi\">1</span><span class=\"p\">]</span>\n<span class=\"go\">199</span>\n</pre></div><p>Index -1 ozna&#x10D;uje <em>posledn&#xED;</em> prvek.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"o\">-</span><span class=\"mi\">2</span><span class=\"p\">]</span>\n<span class=\"go\">3</span>\n</pre></div><p>Index -2 ozna&#x10D;uje p&#x159;edposledn&#xED; prvek.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"o\">-</span><span class=\"mi\">6</span><span class=\"p\">]</span>\n<span class=\"go\">42</span>\n</pre></div><p>Index -6 ozna&#x10D;uje &#x161;est&#xFD; prvek od konce.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"o\">-</span><span class=\"mi\">100</span><span class=\"p\">]</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n  File <span class=\"nb\">&quot;&lt;stdin&gt;&quot;</span>, line <span class=\"m\">1</span>, in <span class=\"n\">&lt;module&gt;</span>\n<span class=\"gr\">IndexError</span>: <span class=\"n\">list index out of range</span>\n</pre></div><p>St&#xFD; prvek od konce v&#xA0;seznamu nen&#xED;. Nastane chyba.</p>\n    </div>\n</div><h2>Odstra&#x148;ov&#xE1;n&#xED;</h2>\n<p>Chce&#x161;-li ze seznamu n&#x11B;co odstranit, m&#x16F;&#x17E;e&#x161; op&#x11B;t pou&#x17E;&#xED;t indexy.\nTentokr&#xE1;t s p&#x159;&#xED;kazem <code>del</code>.\nN&#xE1;sleduj&#xED;c&#xED;m k&#xF3;dem odstra&#x148; po&#x10D;&#xE1;te&#x10D;n&#xED; &#x10D;&#xED;slo seznamu, tedy prvek &#x10D;&#xED;slo 0:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">del</span> <span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n</pre></div><p>Pak si seznam op&#x11B;t vypi&#x161;. Kousek chyb&#xED;!</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[42, 30, 19, 12, 3, 199]</span>\n</pre></div><p>Zkus&#xED;&#x161; odstranit posledn&#xED; prvek?</p>\n<div class=\"solution\" id=\"solution-3\">\n    <h3>&#x158;e&#x161;en&#xED;</h3>\n    <div class=\"solution-cover\">\n        <a href=\"/2019/brno-jaro-snake/fast-track/list/index/solutions/3/\"><span class=\"link-text\">Uk&#xE1;zat &#x159;e&#x161;en&#xED;</span></a>\n    </div>\n    <div class=\"solution-body\" aria-hidden=\"true\">\n        <div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">del</span> <span class=\"n\">loterie</span><span class=\"p\">[</span><span class=\"o\">-</span><span class=\"mi\">1</span><span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[42, 30, 19, 12, 3]</span>\n</pre></div>\n    </div>\n</div><p>Ob&#x10D;ase se stane, &#x17E;e nechce&#x161; smazat prvek podle pozice, ale podle toho,\nco v&#xA0;seznamu je.\nK&#xA0;tomu slou&#x17E;&#xED; hodnota <code>remove</code>, kter&#xE1; najde a odstran&#xED; danou hodnotu:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[42, 3]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span><span class=\"o\">.</span><span class=\"n\">remove</span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[42]</span>\n</pre></div><h2>&#x158;ez&#xE1;n&#xED;</h2>\n<p>Ze seznamu se d&#xE1; krom&#x11B; jednoho prvku vybrat i prvk&#x16F; n&#x11B;kolik &#x2013; &#x10D;&#xE1;st seznamu,\ntakzvan&#xFD; <em>podseznam</em>.</p>\n<p>Poj&#x10F;me si op&#x11B;t ud&#x11B;lat del&#x161;&#xED; seznam &#x10D;&#xED;sel:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;Prvn&#xED;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Druh&#xFD;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;T&#x159;et&#xED;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&#x10C;tvrt&#xFD;&quot;</span><span class=\"p\">]</span>\n</pre></div><p>Bude&#x161;-li cht&#xED;t vybrat prvky od druh&#xE9;ho d&#xE1;l, dej do hranat&#xFD;ch z&#xE1;vorek &#x10D;&#xED;slo\ntohohle prvku, a za n&#x11B;j dvojte&#x10D;ku.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span>\n<span class=\"go\">&apos;Druh&#xFD;&apos;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">:]</span>\n<span class=\"go\">[&apos;Druh&#xFD;&apos;, &apos;T&#x159;et&#xED;&quot;&apos;, &apos;&#x10C;tvrt&#xFD;&apos;]</span>\n</pre></div><p>Vybr&#xE1;n&#xED;m podseznamu se seznam nem&#x11B;n&#xED;, tak m&#x16F;&#x17E;e&#x161; vyb&#xED;rat d&#xE1;l:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span>\n<span class=\"go\">[&apos;Prvn&#xED;&apos;, &apos;Druh&#xFD;&apos;, &apos;T&#x159;et&#xED;&apos;, &apos;&#x10C;tvrt&#xFD;&apos;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">:]</span>\n<span class=\"go\">[&apos;Druh&#xFD;&apos;, &apos;T&#x159;et&#xED;&quot;&apos;, &apos;&#x10C;tvrt&#xFD;&apos;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span><span class=\"p\">[</span><span class=\"mi\">2</span><span class=\"p\">:]</span>\n<span class=\"go\">[&apos;T&#x159;et&#xED;&apos;, &apos;&#x10C;tvrt&#xFD;&apos;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span><span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">:]</span>\n<span class=\"go\">[&apos;&#x10C;tvrt&#xFD;&apos;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span><span class=\"p\">[</span><span class=\"mi\">4</span><span class=\"p\">:]</span>\n<span class=\"go\">[]</span>\n</pre></div><p>Bude&#x161;-li cht&#xED;t vybrat prvky od za&#x10D;&#xE1;tku <em>do</em> n&#x11B;kter&#xE9;ho prvku, dej dvojte&#x10D;ku\n<em>p&#x159;ed</em> &#x10D;&#xED;slo prvku, kter&#xFD; u&#x17E; ve v&#xFD;sledku nechce&#x161;</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span><span class=\"p\">[</span><span class=\"mi\">2</span><span class=\"p\">]</span>\n<span class=\"go\">&apos;T&#x159;et&#xED;&apos;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span><span class=\"p\">[:</span><span class=\"mi\">2</span><span class=\"p\">]</span>\n<span class=\"go\">[&apos;Prvn&#xED;&apos;, &apos;Druh&#xFD;&apos;]</span>\n</pre></div><p>&#xDA;kol: m&#xE1;&#x161;-li n&#x11B;jak&#xFD; seznam, jak z&#xA0;n&#x11B;j vybere&#x161; v&#x161;echny prvky krom&#x11B; posledn&#xED;ho?</p>\n<div class=\"solution\" id=\"solution-4\">\n    <h3>&#x158;e&#x161;en&#xED;</h3>\n    <div class=\"solution-cover\">\n        <a href=\"/2019/brno-jaro-snake/fast-track/list/index/solutions/4/\"><span class=\"link-text\">Uk&#xE1;zat &#x159;e&#x161;en&#xED;</span></a>\n    </div>\n    <div class=\"solution-body\" aria-hidden=\"true\">\n        <p>Posledn&#xED; &#x10D;&#xED;slo m&#xE1; index -1, vyberu tedy prvky do -1:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span><span class=\"p\">[:</span><span class=\"o\">-</span><span class=\"mi\">1</span><span class=\"p\">]</span>\n<span class=\"go\">[&apos;Prvn&#xED;&apos;, &apos;Druh&#xFD;&apos;, &apos;T&#x159;et&#xED;&apos;]</span>\n</pre></div>\n    </div>\n</div><p>Za&#x10D;&#xE1;tek a konec se d&#xE1; kombinovat &#x2013; &#x10D;&#xED;slo m&#x16F;&#x17E;e&#x161; d&#xE1;t p&#x159;ed i za dvojte&#x10D;ku:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span>\n<span class=\"go\">[&apos;Prvn&#xED;&apos;, &apos;Druh&#xFD;&apos;, &apos;T&#x159;et&#xED;&apos;, &apos;&#x10C;tvrt&#xFD;&apos;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">:</span><span class=\"o\">-</span><span class=\"mi\">1</span><span class=\"p\">]</span>\n<span class=\"go\">[&apos;Druh&#xFD;&apos;, &apos;T&#x159;et&#xED;&apos;]</span>\n</pre></div><p>&#x158;ez&#xE1;n&#xED; funguje i pro p&#x159;&#xED;kaz <code>del</code>.\nZkus vymazat prost&#x159;edn&#xED; dv&#x11B; &#x10D;&#xED;sla:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span>\n<span class=\"go\">[&apos;Prvn&#xED;&apos;, &apos;Druh&#xFD;&apos;, &apos;T&#x159;et&#xED;&apos;, &apos;&#x10C;tvrt&#xFD;&apos;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">del</span> <span class=\"n\">cisla</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">:</span><span class=\"o\">-</span><span class=\"mi\">1</span><span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cisla</span>\n<span class=\"go\">[&apos;Prvn&#xED;&apos;, &apos;&#x10C;tvrt&#xFD;&apos;]</span>\n</pre></div><h2>&#x158;ez&#xE1;n&#xED; &#x159;et&#x11B;zc&#x16F;</h2>\n<p>Hranat&#xE9; z&#xE1;vorky funguj&#xED; i u &#x159;et&#x11B;zc&#x16F;, kde vyb&#xED;raj&#xED; p&#xED;smenka:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">jidlo</span> <span class=\"o\">=</span> <span class=\"s1\">&apos;&#x10D;okol&#xE1;da&apos;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">jidlo</span><span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">]</span>\n<span class=\"go\">&apos;o&apos;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">jidlo</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">:</span><span class=\"mi\">4</span><span class=\"p\">]</span>\n<span class=\"go\">&apos;oko&apos;</span>\n</pre></div><p>P&#x159;edstav si, &#x17E;e m&#xE1;&#x161; v prom&#x11B;nn&#xE9; <code>jmeno</code> &#x17E;ensk&#xE9; jm&#xE9;no jako <code>&apos;Ola&apos;</code>,\n<code>&apos;Kryst&#xFD;na&apos;</code> nebo <code>&apos;R&#x16F;&#x17E;ena&apos;</code>.\nJak z&#xA0;n&#x11B;j vytvo&#x159;&#xED;&#x161; druh&#xFD; p&#xE1;d (nap&#x159;. bez <code>&apos;R&#x16F;&#x17E;eny&apos;</code>)?</p>\n<div class=\"solution\" id=\"solution-5\">\n    <h3>&#x158;e&#x161;en&#xED;</h3>\n    <div class=\"solution-cover\">\n        <a href=\"/2019/brno-jaro-snake/fast-track/list/index/solutions/5/\"><span class=\"link-text\">Uk&#xE1;zat &#x159;e&#x161;en&#xED;</span></a>\n    </div>\n    <div class=\"solution-body\" aria-hidden=\"true\">\n        <p>Vezmi jm&#xE9;no a&#x17E; po posledn&#xED; p&#xED;smeno a p&#x159;id&#xE1;&#x161; <code>&apos;y&apos;</code>. Nap&#x159;&#xED;klad:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">jmeno</span> <span class=\"o\">=</span> <span class=\"s1\">&apos;R&#x16F;&#x17E;ena&apos;</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">jmeno</span><span class=\"p\">[:</span><span class=\"o\">-</span><span class=\"mi\">1</span><span class=\"p\">]</span> <span class=\"o\">+</span> <span class=\"s1\">&apos;y&apos;</span>\n<span class=\"s1\">&apos;R&#x16F;&#x17E;eny&apos;</span>\n</pre></div>\n    </div>\n</div><h2>Shrnut&#xED;</h2>\n<p>Uf! O seznamech toho bylo k&#xA0;nau&#x10D;en&#xED; celkem hodn&#x11B;. Shr&#x148;me si, co u&#x17E; um&#xED;&#x161;:</p>\n<ul>\n<li><strong>Seznam</strong> je se&#x159;azen&#xE1; sekvence hodnot.</li>\n<li>Pomoc&#xED; <strong>metod</strong> se seznam d&#xE1; &#x159;adit (<code>sort</code>) a obr&#xE1;tit (<code>reverse</code>),\nnebo se do n&#x11B;j d&#xE1; p&#x159;idat (<code>append</code>) &#x10D;i odebrat (<code>remove</code>) prvek.</li>\n<li>Prvky se daj&#xED; <strong>vybrat</strong> nebo <strong>odstranit</strong> (<code>del</code>) podle indexu.</li>\n<li>&#x10C;&#xED;slov&#xE1;n&#xED; za&#x10D;&#xED;n&#xE1; <strong>od nuly</strong>, z&#xE1;porn&#xE1; &#x10D;&#xED;sla berou prvky od konce.</li>\n<li><strong>Podseznam</strong> je ur&#x10D;it&#xE1; &#x10D;&#xE1;st seznamu.</li>\n<li>U <strong>&#x159;et&#x11B;zc&#x16F;</strong> funguje vyb&#xED;r&#xE1;n&#xED; prvk&#x16F; a pod&#x159;et&#x11B;zc&#x16F; podobn&#x11B;</li>\n</ul>\n<p>Jsi p&#x159;ipravena na dal&#x161;&#xED; &#x10D;&#xE1;st?</p>\n\n\n        "
    }
  }
}