V jazyce Python je znalost seznamů klíčová pro vytváření nových seznamů z existujících iterovatelných objektů, jako jsou seznamy, řetězce a n-tice.
Díky jejich zhuštěné syntaxi můžete vytvářet nové seznamy pomocí jediného řádku kódu. Tento návod vám ukáže, jak na to.
Během několika následujících minut se naučíte:
- Jak generovat nový seznam s využitím smyček for,
- Jaká je syntaxe pro používání seznamů v Pythonu a
- Jak upravit vytváření seznamů pomocí podmínky if.
Navíc si prakticky procvičíte několik příkladů, které vám pomohou lépe pochopit tvorbu seznamů.
Pojďme na to. 🚀
Tvorba seznamů v Pythonu pomocí smyčky for
Řekněme, že máte seznam čísel pojmenovaný nums
. Chcete vytvořit nový seznam, který bude obsahovat třetí mocninu všech čísel v seznamu nums
. Zde je postup, jak toho dosáhnout pomocí cyklu for v Pythonu:
nums = [2,3,5,7]
num_cubes = []
for num in nums:
num_cubes.append(num**3)
print(num_cubes)
# Výstup
[8, 27, 125, 343]
Výše uvedený kód se skládá z následujících kroků:
- Inicializuje se prázdný seznam
num_cubes
. - Prochází se seznam
nums
. - Získá se každé číslo
num
a vypočítá se jeho krychle pomocí operátoru umocňování:num**3
. - Nakonec se hodnota krychle přidá do seznamu
num_cubes
.
Poznámka: V Pythonu se operátor umocňování **
používá ve formátu: num**pow
– kde číslo num
je umocněno na pow
.
Tohle je ale možné zjednodušit pomocí vytváření seznamů v Pythonu. Nyní se seznámíme s jeho syntaxí.
Syntaxe pro vytváření seznamů v Pythonu
Obecná syntaxe pro vytváření seznamů je uvedena níže:
<novy_seznam> = [<vyraz> for <prvek> in <iterovatelny_objekt>]
Pojďme si tuto syntaxi rozebrat:
- V Pythonu jsou seznamy ohraničeny hranatými závorkami
[]
– proto musí být i definice vytváření seznamu uzavřena uvnitř[]
. <prvek> in <iterovatelny_objekt>
znamená, že se iteruje přes iterovatelný objekt. Jakýkoli objekt Pythonu, přes který můžete procházet a přistupovat k jednotlivým prvkům – například seznamy, n-tice a řetězce – je iterovatelný.<vyraz>
představuje výstup, který se má vypočítat pro každý<prvek>
v<iterovatelny_objekt>
.
Zní to jednoduše, že?
V podstatě chcete provést nějakou operaci pro všechny prvky v seznamu (nebo jakémkoli iterovatelném objektu), abyste získali nový seznam.
Tím můžeme zjednodušit syntaxi, jak je znázorněno níže.
Syntaxe vytváření seznamu v Pythonu (obrázek od autora)
Nyní, když znáte syntaxi, je čas začít programovat. K procvičování těchto příkladů můžete použít online Python IDE etechblog.cz. Nebo je můžete spustit na vašem počítači.
Příklady vytváření seznamů v Pythonu
V předchozí části jste vytvořili nový seznam num_cubes
ze seznamu nums
. Začneme tím, že to přepíšeme pomocí vytváření seznamu.
Použití vytváření seznamu s čísly
Nyní použijeme zjednodušenou syntaxi takto:
<proved-to>
: Zde musíte umocnit každé číslo na třetí mocninu. Nahraďte tedy<proved-to>
výrazemnum**3
.<vsechny-prvky>
: Proměnná iterace jenum
– jednotlivá čísla v seznamu.<tento-seznam>
: Stávající seznam, který máme, jenums
.- A
[num**3 for num in nums]
je výsledný výraz. ✅
Když to dáme dohromady, máme tento fragment kódu:
num_cubes = [num**3 for num in nums]
print(num_cubes)
# Výstup
[8, 27, 125, 343]
Gratuluji, právě jste napsali svůj první kód s využitím vytváření seznamu. 🎉
Pojďme dál a pracujme s řetězci v Pythonu.
Použití vytváření seznamu s řetězci
Řekněme, že máte seznam autorů — níže uvedený seznam můžete přepsat svými oblíbenými autory. 😄
authors = ["jane austen","george orwell","james clear","cal newport"]
Všimněte si, že jména autorů ve výše uvedeném seznamu jsou uvedena malými písmeny. Nyní bychom je chtěli naformátovat do formátu názvu a uložit do nového seznamu s názvem author_list
.
Poznámka: V Pythonu metoda řetězce title()
přijme řetězec jako argument a vrátí jeho kopii formátovanou dle velikosti písmen. To znamená, že první písmeno každého slova je velké: Jméno Příjmení.
Zde je vše, co musíte udělat:
- Projděte seznam
authors
a pro každého autora v seznamu - Zavolejte metodu
author.title()
pro získání kopie řetězce s velkými písmeny v názvu.
A zde je kód Pythonu, který toho dosáhne:
authors = ["jane austen","george orwell","james clear","cal newport"]
author_list = [author.title() for author in authors]
print(author_list)
# Výstup
['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']
Všimněte si, že ve výše uvedeném výstupu jsou jména všech autorů formátována s velkými písmeny na začátku každého slova – přesně to jsme chtěli.
Použití vytváření seznamu s více seznamy
Zatím jste se naučili, jak používat vytváření seznamů pro vytváření nových seznamů z jednoho existujícího seznamu. Nyní se naučíme, jak vytvořit nový seznam z více seznamů.
Zvažte například tento problém: Máte dva seznamy l_arr
a b_arr
obsahující délky a šířky 4 obdélníků.
A musíte vytvořit nový seznam area
, který bude obsahovat plochy těchto 4 obdélníků. Pamatujte, že plocha = délka * šířka.
l_arr = [4,5,1,3]
b_arr = [2,1,7,9]
K výpočtu plochy budete potřebovat prvky z obou seznamů (l_arr
a b_arr
). A to můžete udělat pomocí funkce zip()
Pythonu.
Poznámka: V Pythonu funkce zip()
přijímá jeden nebo více iterovatelných argumentů se syntaxí zip(*iterables)
. Poté vrátí iterátor n-tic, kde n-tice i obsahuje prvek i z každého z iterovatelných.
Následující obrázek to podrobně ilustruje. V l_arr
a b_arr
máte 4 hodnoty, takže rozsah indexů je od 0 do 3. Jak vidíte, n-tice 0 obsahuje l_arr[0]
a b_arr[0]
, n-tice 1 obsahuje l_arr[1]
a b_arr[1]
a tak dále.
Funkce Python zip()
(Obrázek od autora)
Proto můžete procházet zip(l_arr, b_arr)
, jak je znázorněno níže:
area = [l*b for l,b in zip(l_arr,b_arr)]
print(area)
# Výstup
[8, 5, 7, 27]
V následující části se naučíte, jak používat podmíněné příkazy při vytváření seznamu.
Vytváření seznamů v Pythonu s podmínkou
Začněme tím, že navážeme na předchozí syntaxi pro vytváření seznamů.
Zde je syntaxe:
<novy_seznam> = [<vyraz> for <prvek> in <iterovatelny_objekt> if <podminka>]
Namísto výpočtu <vyraz>
pro všechny prvky, chcete to provést pouze pro ty prvky, které splňují určitou <podminku>
— kde, podmínka := True
. A to vede ke zjednodušené syntaxi, jak je znázorněno:
Vytváření seznamů v Pythonu se syntaxí podmínky (obrázek od autora)
▶ S tím přejdeme k příkladům kódu.
Vytváření seznamů v Pythonu s příklady podmínek
#1. Máte řetězec „Učím se Python v roce 2022“. Chcete získat seznam všech číslic v tomto řetězci. Jak na to?
V Pythonu <znak>.isdigit()
aplikované na <znak>
vrátí True
, pokud je to číslice (0-9); jinak vrátí False
.
Následující fragment kódu ukazuje, jak můžete shromáždit seznam všech číslic v řetězci str1
.
str1 = "Učím se Python v roce 2022"
digits = [char for char in str1 if char.isdigit()]
print(digits)
# Výstup
['2', '0', '2', '2']
Ve výše uvedeném kódu:
- Procházíte řetězcem
str1
, - Přistupujete ke každému znaku a ověřujete, zda je číslice pomocí metody
isdigit()
a - Přidáte znak do nového seznamu
digits
pouze v případě, že je to číslice.
Vezměme si další příklad.
#2. Máte seznam ovoce.🍊 A chtěli byste vytvořit seznam starts_with_b
, který bude obsahovat všechny druhy ovoce ze seznamu fruits
, které začínají na „b“. K zapsání podmínky můžete použít metodu startswith()
.
<str>.startswith('znak')
vrací True
, pokud <str>
začíná na 'znak'
; jinak vrátí False
.
fruits = ['borůvka','jablko','banán','pomeranč','třešeň']
starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')]
print(starts_with_b)
# Výstup
['borůvka', 'banán']
Ve výše uvedeném výstupu dostaneme ‚borůvka‘ a ‚banán‘, což jsou dvě ovoce, která začínají na ‚b‘ v seznamu fruits
, jak jsme očekávali.
A tím končí naše povídání o vytváření seznamů.
Závěr
Doufám, že vám tento návod pomohl pochopit, jak se vytváří seznamy v Pythonu.
Pojďme si to shrnout:
- Můžete použít
[<proved-to> for <vsechny-prvky> in <tento-seznam>]
pro vytvoření nového seznamu pomocí vytváření seznamu. - Navíc můžete použít syntaxi
[<proved-to> for <vsechny-prvky> in <tento-seznam> if <podminka-je-True>]
s podmíněným příkazemif
.
Kromě toho jste si procvičili několik příkladů. Jako další krok si můžete zkusit přepsat některé z vašich stávajících smyček Pythonu pro vytváření seznamů pomocí vytváření seznamu. Přeji vám příjemné programování! A těším se na vás v dalším návodu. 😄
Nyní se můžete podívat na to, jak převést seznam na slovník, nebo se naučit, jak pracovat se soubory v Pythonu.