Načítání stránky…

Seznamy v Pythonu

Připravit hodinu Všechny formáty

Seznam v Pythonu je uspořádaná kolekce hodnot pod jedním jménem. Žák ho použije tam, kde by jednotlivé proměnné nestačily: neznámý počet údajů, stejný postup nad řadou prvků, potřeba přistoupit k n-té položce. Téma navazuje na proměnné, výrazy, větvení a cykly; nejde o tabulky, relace ani o informační systémy.

Klikněte a tvořte

Získejte přípravu zdarma

Vyberte formát. Jedním kliknutím otevřete tvorbu na téma Seznamy v Pythonu (II. ročník) — ScioBot ho připraví za vás.

Připravit hodinu

Další formáty na jedno kliknutí

Téma si můžete upravit. Předmět a ročník už jsou vyplněné — stačí si vybrat, co chcete vytvořit.

O tématu

Program prochází seznam cyklem, čte a mění prvky podle indexu a přidává nebo odebírá položky podle zadání. Podle RVP G žák v přehledném programu kombinuje opakování, větvení, proměnné a seznamy a volí datovou strukturu s ohledem na důsledek chyby (špatný index, prázdný seznam, záměna pořadí).

Cílem hodiny je, aby žák uměl seznam založit, naplnit, projít a zdůvodnit, proč je pro daná data vhodnější než několik samostatných proměnných. Složitější algoritmy nad seznamy, funkce s parametry a ladění navazují v dalších jednotkách plánu.

Binární vyhledávání v seznamu pomocí indexů
Seznamy jako jeden z datových typů Pythonu
Zdroje obrázků
  1. MsDennig · CC BY-SA 4.0
  2. Максим Пе · CC BY-SA 4.0

Předpoklady

Klíčové pojmy

Seznam jako kolekce

Hranaté závorky a čárky: více hodnot jednoho nebo různých typů pod jedním jménem; délka se zjišťuje funkcí len.

Index od nuly

První prvek má index 0, poslední len(seznam) - 1; záporný index počítá od konce (−1 je poslední prvek).

Čtení a zápis prvku

seznam[i] vrací prvek; seznam[i] = hodnota ho přepíše. Index mimo rozsah vyvolá chybu.

Průchod cyklem

Cyklus for prvek in seznam: postupně zpřístupní hodnoty. Cyklus přes indexy se hodí například při přepisování prvků na jejich místě.

seznam = [2, 4, 6]
for i in range(len(seznam)):
    seznam[i] = seznam[i] * 2
print(seznam)  # [4, 8, 12]
Změna délky

Metoda append přidá prvek na konec seznamu, pop prvek odebere a vrátí jeho hodnotu. Bez indexu odebírá poslední prvek. Prázdný seznam [] je platný stav; pokus odebrat z něj prvek však vyvolá IndexError.

Kdy seznam zvolit

Seznam dává smysl při neznámém nebo větším počtu stejnorodých údajů a při stejném postupu nad všemi; dvě tři pojmenované veličiny seznamem nenahrazujeme.

Nápady na aktivity

  1. Postup

    Průchod seznamem pomocí cyklu

    Žáci seřadí kroky průchodu seznamem: načtení prvku, práce s jeho indexem a aktualizace hodnoty. Zaměří se na to, jak se stav mění při každém opakování.

  2. Přiřazování

    Indexy a prvky seznamu

    Žáci přiřadí výrazy s indexy ke správným prvkům seznamu a určí, jakou hodnotu výraz vrátí. Procvičí práci s konkrétními pozicemi v seznamu.

  3. Rozřazování

    Proměnné, nebo seznam?

    Žáci roztřídí situace podle toho, zda stačí samostatné proměnné, nebo je vhodnější uložit více hodnot stejného typu do seznamu. U každé volby zváží, jak se s daty bude dál pracovat.

  4. Kvíz

    Přemýšlíme o seznamech v Pythonu

    Žáci odpovídají na otázky o vytváření seznamů, indexování a průchodu cyklem. U úloh s kódem určí hodnotu prvku nebo obsah seznamu po provedení příkazů.

  5. Doplňování

    Doplň kód pro práci se seznamem

    Žáci doplní chybějící části krátkých úryvků Pythonu, aby správně získali prvek podle indexu nebo prošli celý seznam cyklem.

  6. Logický řetěz

    Příčina a důsledek při průchodu seznamem

    Žáci sestaví řetěz navazujících kroků a důsledků při průchodu seznamem cyklem, například jak změna prvku ovlivní hodnotu zpracovávanou v dalším kroku.

Časté miskoncepce

  • Častá chyba

    Žák napíše seznam[1] a čeká první známku / první město, protože „první je jednička“.

    Jak na to

    Na tabuli očíslujte konkrétní seznam od nuly a nechte žáka ukázat první prvek. Potom porovnejte výstupy print(seznam[0]) a print(seznam[1]).

  • Častá chyba

    V cyklu for x in seznam žák uvnitř napíše x = nová_hodnota a čeká, že se seznam změní.

    Jak na to

    Porovnejte stejnou úlohu s cyklem přes range(len(seznam)) a přiřazením seznam[i] = nova_hodnota. Vypište seznam před změnou i po ní; přiřazení do proměnné cyklu a změna prvku seznamu jsou různé operace.

  • Častá chyba

    Žák založí a1, a2, a3, a4 pro čtyři vstupy a při pátém údaji program přepisuje nebo vzdá.

    Jak na to

    Zadat „neznámý počet čísel do konce vstupu“ a nechat doplnit append v cyklu; porovnat s verzí o pevném počtu proměnných.

  • Častá chyba

    Žák sáhne na seznam[len(seznam)] nebo na prázdný seznam[0] a neví, proč program spadne.

    Jak na to

    Přečtěte chybu IndexError a určete použitý index. U neprázdného seznamu je poslední nezáporný index len(seznam) - 1; před přístupem k prvnímu nebo poslednímu prvku ověřte, že seznam není prázdný.

Úkoly pro žáky

  • Seznam známek: načíst n hodnot, spočítat průměr a najít maximum průchodem, ne vestavěnými funkcemi jako jediným řešením.

  • Oprava „škrtnuté“ položky: nahradit zadanou hodnotu v seznamu nebo ji odstranit a vypsat seznam před a po změně.

Hodnocení

Žák napíše program, který načte neznámý počet čísel do seznamu, vypíše je v původním pořadí a spočítá součet cyklem.

Ústně zdůvodní volbu seznamu oproti jednotlivým proměnným a opraví přístup se špatným indexem.

Očekávané výstupy

  • RVP G žák vytvoří přehledný program pro vyřešení konkrétního problému s ohledem na jeho možné důsledky a svou odpovědnost za ně; používá opakování, větvení programu se složenými podmínkami, proměnné, seznamy, podprogramy s parametry a návratovými hodnotami; ve snaze o vyšší efektivitu navrhuje, řídí a hodnotí souběh procesů

Zdroje

Učíte Seznamy v Pythonu trochu jinak?

Popište ScioBotu vlastními slovy, co s žáky chcete zvládnout a kolik máte času. Materiál přizpůsobí vašemu ŠVP, třídě i žákům se speciálními vzdělávacími potřebami.

Napsat ScioBotu

Prozkoumejte další témata