Procvičujeme vestavěné funkce: enumerate()
V tomto cvičení si procvičíš práci s vestavěnou funkcí Pythonu enumerate(). Tato funkce se hodí, když potřebuješ seznam s indexy. Představ si například seznam hostů, kteří přišli na tvou párty, seřazený podle příchodu (Jerry přišel jako první, po něm Kramer atd.):
names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']
Pokud bys chtěl/a ke každé osobě přiřadit index odpovídající pořadí příchodu, mohl/a bys použít následující for cyklus:
indexed_names = []
for i in range(len(names)):
index_name = (i, names[i])
indexed_names.append(index_name)
[(0,'Jerry'),(1,'Kramer'),(2,'Elaine'),(3,'George'),(4,'Newman')]
To ale není nejefektivnější řešení. Pojďme se podívat, jak to samé zvládnout elegantněji pomocí enumerate().
Toto cvičení je součástí kurzu
Psaní efektivního kódu v Pythonu
Pokyny k cvičení
- Místo
for i in range(len(names))uprav for cyklus tak, aby používalijako indexovou proměnnou,namejako iterační proměnnou a funkcienumerate(). - Přepiš předchozí for cyklus pomocí
enumerate()a list comprehension a vytvoř nový seznamindexed_names_comp. - Vytvoř další seznam (
indexed_names_unpack) pomocí hvězdičky (*) pro rozbalení enumerate objektu vzniklého zenumerate()aplikovaného nanames. Tentokrát nastav počáteční index funkceenumerate()na jedničku místo nuly.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Rewrite the for loop to use enumerate
indexed_names = []
for ____,_____ in ____(names):
index_name = (i,name)
indexed_names.append(index_name)
print(indexed_names)
# Rewrite the above for loop using list comprehension
indexed_names_comp = [(____,____) for i,name in ____(names)]
print(indexed_names_comp)
# Unpack an enumerate object with a starting index of one
indexed_names_unpack = [____(names, ____)]
print(indexed_names_unpack)