Aan de slagGa gratis aan de slag

Oefenen met ingebouwde functies: enumerate()

In deze oefening ga je aan de slag met de ingebouwde Python-functie enumerate(). Deze functie is handig om een gelijste met index te krijgen. Stel dat je een lijst hebt met mensen die op een feestje dat jij geeft zijn aangekomen. De lijst is geordend op aankomst (Jerry kwam als eerste, daarna Kramer, enz.):

names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']

Als je een index wilt toevoegen die de volgorde van aankomst weergeeft, zou je de volgende for-lus kunnen gebruiken:

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')]

Maar dat is niet de meest efficiënte oplossing. Laten we verkennen hoe je enumerate() kunt gebruiken om dit efficiënter te maken.

Deze oefening maakt deel uit van de cursus

Efficiënte Python-code schrijven

Cursus bekijken

Oefeninstructies

  • In plaats van for i in range(len(names)) te gebruiken, pas je de for-lus aan om i als indexvariabele en name als iteratorvariabele te gebruiken met enumerate().
  • Herschrijf de vorige for-lus met enumerate() en list comprehension om een nieuwe lijst indexed_names_comp te maken.
  • Maak nog een lijst (indexed_names_unpack) door het sterretje (*) te gebruiken om het enumerate object uit te pakken dat ontstaat door enumerate() op names toe te passen. Laat dit keer de index voor enumerate() beginnen bij één in plaats van nul.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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)
Code bewerken en uitvoeren