Cyklus s evidováním pořadí v seznamu

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.