@@ -18,6 +18,7 @@ Spousta těchto typů umí něco navíc: zjistit jestli obsahují nějaký prvek
1818Nic z toho ale není potřeba, aby byl objekt iterovatelný.
1919
2020Podívejme se na dva další iterovatelné objekty: ` enumerate ` a ` zip ` .
21+ Oba jsou sekvence vytvořené z jiných, jednodušších sekvencí.
2122
2223
2324## Enumerate: očíslování sekvence
@@ -59,9 +60,23 @@ for dvojice in enumerate(trpaslici):
5960Objekt, který funkce ` enumerate ` vrací, je * iterátor dvojic* – sekvence,
6061jejíž prvky jsou dvojice.
6162
63+ Sekvence ` enumerate ` toho „umí“ ještě míň než seznam nebo ` range ` .
64+ Nejde z ní ani vybírat prvky, o metodách jako ` append ` ani nemluvě:
65+
66+ ``` pycon
67+ >>> enumerate (trpaslici)[3 ]
68+ Traceback (most recent call last):
69+ File "<stdin>", line 1, in <module>
70+ TypeError: 'enumerate' object is not subscriptable
71+ ```
72+
73+ Když budeš od sekvence ` enumerate ` chtít něco víc než iterování,
74+ převeď ji na seznam.
75+
76+
6277## Rozbalování v cyklu for
6378
64- Cyklus ` for ` umíme rozepsat: opakuje se v něm nastavení proměnné (které dělá
79+ Cyklus ` for ` umíš rozepsat: opakuje se v něm nastavení proměnné (které dělá
6580` for ` za tebe), pak tělo cyklu, a znovu nastavení proměnné, tělo cyklu, atd.
6681Pro „trpasličí“ cyklus to je:
6782
@@ -155,11 +170,11 @@ for index, den in enumerate(dny, start=1):
155170Další iterátor <var >n</var >-tic je funkce ` zip ` , která umí projít dvě sekvence
156171naráz.
157172
158- Řekněme že máš seznam věcí a k nim příslušných barev :
173+ Řekněme že máš seznam věcí a druhý seznam, ve kterém jsou barvy těch věcí :
159174
160175``` python
161- veci = [' tráva' , ' slunce' , ' mrkev' , ' řeka ' ]
162- barvy = [' zelená' , ' žluté' , ' oranžová' , ' modrá ' ]
176+ veci = [' tráva' , ' slunce' , ' mrkev' , ' list ' ]
177+ barvy = [' zelená' , ' žluté' , ' oranžová' , ' zelený ' ]
163178```
164179
165180Když na ně zavoláš ` zip ` , dostaneš iterátor, který (podobně jako ` enumerate `
@@ -179,7 +194,7 @@ Po převedení na seznam se ale ukáže seznam odpovídajících si dvojic:
179194
180195``` pycon
181196>>> list (zip (veci, barvy))
182- [('tráva', 'zelená'), ('slunce', 'žluté'), ('mrkev', 'oranžová'), ('řeka ', 'modrá ')]
197+ [('tráva', 'zelená'), ('slunce', 'žluté'), ('mrkev', 'oranžová'), ('list ', 'zelený ')]
183198```
184199
185200Takové dvojice jsou připravené na to, že je rozbalíš v cyklu ` for ` :
@@ -194,9 +209,9 @@ V následujícím případě vznikne iterátor čtveřic (věc, barva,
194209místo, číslo):
195210
196211``` python
197- veci = [' tráva' , ' slunce' , ' mrkev' , ' řeka ' ]
198- barvy = [' zelená' , ' žluté' , ' oranžová' , ' modrá ' ]
199- mista = [' na zemi' , ' nahoře' , ' na talíři' , ' za zídkou ' ]
212+ veci = [' tráva' , ' slunce' , ' mrkev' , ' list ' ]
213+ barvy = [' zelená' , ' žluté' , ' oranžová' , ' zelený ' ]
214+ mista = [' na zemi' , ' nahoře' , ' na talíři' , ' na stromě ' ]
200215cisla = range (4 )
201216
202217for vec, barva, misto, cislo in zip (veci, barvy, mista, cisla):
@@ -209,8 +224,8 @@ for vec, barva, misto, cislo in zip(veci, barvy, mista, cisla):
209224Jak se ` zip ` chová, když dostane seznamy různých délek?
210225
211226``` python
212- veci = [' tráva' , ' slunce' , ' mrkev' , ' řeka ' , ' myšlenka' , ' spravedlnost' ]
213- barvy = [' zelená' , ' žluté' , ' oranžová' , ' modrá ' ]
227+ veci = [' tráva' , ' slunce' , ' mrkev' , ' list ' , ' myšlenka' , ' spravedlnost' ]
228+ barvy = [' zelená' , ' žluté' , ' oranžová' , ' zelený ' ]
214229for vec, barva in zip (veci, barvy):
215230 print (f " { vec} je { barva} " )
216231```
0 commit comments