Použití * a zip k 'rozbalení'
Umíš pracovat s zip() i vypisovat hodnoty z objektu zip. Výborně!
Pohrajme si s zip() ještě trochu víc. Na rozdíl od zip() neexistuje žádná funkce unzip, která by dělala opak. Pomocí zip() ve spojení s operátorem * ale lze to, co bylo zabaleno pomocí zip, zase rozbalit! * rozbalí iterovatelný objekt, například seznam nebo n-tici, do pozičních argumentů při volání funkce.
V tomto cvičení použiješ * ve volání zip() k rozbalení n-tic, které zip() vytvoří.
Dvě n-tice řetězců, mutants a powers, jsou již předem načteny.
Toto cvičení je součástí kurzu
Python Toolbox
Pokyny k cvičení
- Vytvoř objekt
zippomocí funkcezip()aplikované namutantsapowers(v tomto pořadí). Výsledek přiřaď do proměnnéz1. - Vypiš n-tice z
z1jejich rozbalením do pozičních argumentů pomocí operátoru*ve voláníprint(). - Protože předchozí volání
print()vyčerpá všechny prvky zz1, znovu vytvoř dříve definovaný objektzipa výsledek opět přiřaď doz1. - 'Rozbal' n-tice z
z1jejich rozbalením do pozičních argumentů pomocí operátoru*ve volánízip(). Výsledky přiřaď doresult1aresult2(v tomto pořadí). - Poslední příkaz
print()vypíše výsledek porovnáníresult1smutantsaresult2spowers. Klikni naSubmit Answera zjisti, zda jsou rozbalené proměnnéresult1aresult2shodné smutants, resp.powers.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Create a zip object from mutants and powers: z1
z1 = ____
# Print the tuples in z1 by unpacking with *
print(____)
# Re-create a zip object from mutants and powers: z1
z1 = ____
# 'Unzip' the tuples in z1 by unpacking with * and zip(): result1, result2
result1, result2 = ____
# Check if unpacked tuples are equivalent to original tuples
print(result1 == mutants)
print(result2 == powers)