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?
Teď si zkus seznam seřadit. Na to existuje metoda sort
:
>>> loterie.sort()
Tato funkce nic nevrátí, jen 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]
Podobně jako u řetězců se seznamu 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]
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?
Čí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?
Chceš-li ze seznamu něco odstranit, můžeš opět použít indexy.
Tentokrát s příkazem del
.
Následující kód odstraní 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?
A co prostřední tři?
Zkus si nejdřív vypsat, které to jsou, a pak teprve použít del
.
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]
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?
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í']
Hranaté závorky fungují i u řetězců:
>>> jidlo = 'čokoláda'
>>> jidlo[3]
'o'
>>> jidlo[1:4]
'oko'
Představ si, že máš v proměnné jmeno
jméno jako 'Ola'
,
'Krystýna'
nebo 'Růžena'
.
Jak z něj vytvoříš druhý pád (např. bez 'Růženy'
)?
Uf! O seznamech toho bylo k naučení celkem hodně. Shrňme si, co už umíš:
sort
) a obrátit (reverse
),
nebo se do něj dá přidat (append
) či odebrat (remove
) prvek.del
) podle indexu.Jsi připravena na další část?