Skip to content

Commit b02f606

Browse files
committed
Merge GH-pyvec#639 (Rework lesson on list, tuple, range; add enumerate & zip)
This includes some additions already in this branch.
2 parents da5d50d + 9d5b66d commit b02f606

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed

lessons/beginners/list/index.md

+33-10
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ Všechny udělají změny přímo v daném seznamu a (kromě `pop`) vrací `Non
143143

144144
* `extend()` přidá více prvků najednou,
145145
* `insert()` přidá prvek na danou pozici,
146-
* `pop()` odebere *a vrátí* poslední prvek,
146+
* `pop()` odebere poslední prvek a *vrátí ho* (jako návratovou hodnotu),
147147
* `remove()` odstraní první výskyt daného prvku,
148148
* `sort()` seznam seřadí (řetězce podle “abecedy”, čísla vzestupně),
149149
* `reverse()` obrátí pořadí prvků,
@@ -277,12 +277,12 @@ print(seznam)
277277
Aby se daly seřadit, musí být prvky seznamu vzájemně
278278
*porovnatelné* – konktrétně na ně musí fungovat operátor `<`.
279279
Seznam s mixem čísel a řetězců tedy seřadit nepůjde.
280-
Operátor `<` definuje i jak přesně `sort` řadí: čísla podle velikosti;
281-
řetězce podle speciální „abecedy” která řadí
280+
Operátor `<` definuje i jak přesně `sort` řadí: čísla vzestupně podle
281+
velikosti; řetězce podle speciální „abecedy” která řadí
282282
velká písmena za malá, česká až za anglická, atd.
283283

284-
Metoda `sort` zná pojmenovaný argument
285-
`reverse`. Pokud ho nastavíš na *True*, řadí se naopak.
284+
Metoda `sort` zná pojmenovaný argument `reverse`.
285+
Pokud ho nastavíš na *True*, řadí se naopak – od největšího prvku po nejmenší.
286286

287287
```python
288288
seznam = [4, 7, 8, 3, 5, 2, 4, 8, 5]
@@ -318,7 +318,7 @@ Poslední tři se ale přece jen chovají kapku jinak:
318318
u řetězců pracují s *podřetězci*,
319319
u seznamů jen s *jednotlivými* prvky.
320320
Takže ačkoliv melodie výše obsahuje prvky
321-
`'D'` a `'E'` vedle sebe, `'DE'` v seznamu není:
321+
`'D'` a `'E'` vedle sebe, `'DE'` ani `['D', 'E']`seznamu není:
322322

323323
```python
324324
print('DE' in melodie)
@@ -395,7 +395,7 @@ Podobným způsobem získáš seznam seznam `matka`, `babička`, `prababička`,
395395
```python
396396
predkove = ['matka']
397397
for pocet_pra in range(10):
398-
predkove.append('pra' * pocet_pra + 'babička')
398+
predkove.append(('pra' * pocet_pra) + 'babička')
399399
print(predkove)
400400
```
401401

@@ -405,11 +405,31 @@ zavolej `append` pro všechny kombinace barev a hodnot:
405405
```python
406406
balicek = []
407407
for barva in '', '', '', '':
408-
for hodnota in list(range(2, 11)) + ['J', 'Q', 'K', 'A']:
409-
balicek.append(str(hodnota) + barva)
408+
for hodnota in ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']:
409+
balicek.append(hodnota + barva)
410410
print(balicek)
411411
```
412412

413+
> [note] Jde to líp?
414+
> Psát do programu výčet po sobě jdoucích čísel,
415+
> `'2', '3', '4', '5', '6', '7', '8', '9', '10'`,
416+
> není ideální – na takovou otročinu přece máme počítače!
417+
> Zkus čísla dostat pomocí `range`.
418+
> Ale pozor, není to úplně přímočaré:
419+
>
420+
> * Jaké argumenty dáš funkci `range`, abys dostal{{a}} čísla od 2 do 10?
421+
> * Funkce `range` vrací sekvenci, která ale není seznam.
422+
> Abys ji mohl{{a}} spojit se seznamem `['J', 'Q', 'K', 'A']`, budeš ji muset
423+
> na seznam převést: `list(range(...))`
424+
> * Abys mohl{{a}} čísla z `range` připojit k řetězci jako ``, budeš muset
425+
> každou hodnotu před použitím převést na řetězec: `str(hodnota)`.
426+
>
427+
> Bonus: Jaký je nejkratší zápis, kterým můžeš zadat seznam
428+
> `['J', 'Q', 'K', 'A']`?
429+
>
430+
> Řešení najdeš v textu o kousek níže.
431+
432+
413433
## Seznamy a řetězce
414434

415435
Seznamy a řetězce jsou druhy *sekvencí*.
@@ -458,9 +478,12 @@ Seznam změní „na místě“ a nic nevrací (podobně jako metoda `sort`).
458478
```python
459479
import random
460480

481+
ciselne_hodnoty = list(range(2, 11))
482+
pismenne_hodnoty = list('JQKA')
483+
461484
balicek = []
462485
for barva in '', '', '', '':
463-
for hodnota in list(range(2, 11)) + ['J', 'Q', 'K', 'A']:
486+
for hodnota in ciselne_hodnoty + pismenne_hodnoty:
464487
balicek.append(str(hodnota) + barva)
465488
print(balicek)
466489

0 commit comments

Comments
 (0)