Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Uppdatera for-slingan så att den använder enumerate() med i som indexvariabel och name som iteratorvariabel, i stället för for 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 av enumerate()names. Den här gången ska du låta indexet för enumerate() 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)
Redigera och kör kod