27. Cyklus s evidováním pořadí v seznamu#
27.1. Teorie#
Pro evidování pořadí právě zpracovávaného prvku v seznamu používáme funkci enumerate()
. Díky této funkcí získáme při jednotlivých otočkách cyklu společně s objektem i jeho pozici. To je užitečné, pokud potřebujeme pracovat s prvkem a zároveň vědět, na kterém místě v sekvenci se nachází.
Zde je syntaxe funkce enumerate()
:
for pozice, prvek in enumerate(iterovatelny_objekt):
# Kód, který se provádí pro každý prvek s jeho pozicí
pozice
: Proměnná, do které se uloží pozice (index) aktuálního prvku v iterovatelném objektu.prvek
: Proměnná, do které se uloží samotný prvek z iterovatelného objektu.
Příklad použití funkce enumerate()
:
seznam = ["jabko", "hruska", "banan"]
for index, ovoce in enumerate(seznam):
print(f"Na pozici {index} je {ovoce}")
Méně triviální příklad využití enumerate()
kreslí grafy funkcí, každou do vlastní souřadné soustavy. Příkaz subplots
vytvoří tři souřadné systémy pod sebou a uloží je do seznamu ax
. K prvkům tohoto seznamu potřebujeme mít přístup, abychom mohli do příslušné souřadné soustavy přidat graf. Tento přístup nám zařídí počítadlo indexu.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10)
seznam = [np.sin, np.cos, lambda x:x**2]
fig, ax = plt.subplots(len(seznam),1)
for i,f in enumerate(seznam):
ax[i].plot(x,f(x))
27.2. Úkol#
Napište kód, který použije funkci enumerate()
k procházení řetězce veta
a vypíše na každý řádek znak řetězce spolu s jeho pozicí (pořadovým číslem) v řetězci.
Formát bude „Pozice 0: znak M“.
Pro testovací účely si vymyslete libovolný obsah proměnné veta
.