Inbyggd övning: enumerate()
I den här övningen får du öva på att använda Pythons inbyggda funktion enumerate(). Funktionen är användbar när du vill skapa en indexerad lista. Anta till exempel att du har en lista över gäster som anlände till ett party du arrangerar. Listan är sorterad efter ankomsttid (Jerry kom först, sedan Kramer och så vidare):
names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']
Om du vill lägga till ett index som representerar varje persons ankomstordning kan du använda följande for-slinga:
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')]
Men det är inte den mest effektiva lösningen. Nu ska vi se hur enumerate() kan göra det här mer effektivt.
Den här övningen är en del av kursen
Att skriva effektiv Python-kod
Övningsinstruktioner
- Uppdatera for-slingan så att den använder
enumerate()medisom indexvariabel ochnamesom iteratorvariabel, i stället förfor i in range(len(names)). - Skriv om den tidigare for-slingan med
enumerate()och listomfattning för att skapa en ny lista,indexed_names_comp. - Skapa ytterligare en lista (
indexed_names_unpack) genom att använda asterisktecknet (*) för att packa upp det enumerate-objekt som skapas avenumerate()pånames. Den här gången ska du låta indexet förenumerate()börja på ett i stället för noll.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)