Ga naar hoofdinhoud

2.8 Bouw zelf — vind ook de index van het maximum

Leerdoel: je past het patroon aan om niet alleen de waarde, maar ook de positie (index) terug te geven.

Opdracht

Schrijf vind_index_van_maximum(lijst) die de index terug geeft van het maximum. Bij meerdere voorkomende → de eerste index.

  • vind_index_van_maximum([3, 7, 2, 9, 4])3
  • vind_index_van_maximum([10, 20, 20, 10])1 (eerste 20)
  • vind_index_van_maximum([42])0

Aan het eind plotten we de lijsten en markeren we de gevonden index met een rode dot.

Python
Code-omgeving wordt voorbereid…
Tip

Zelfde patroon als vind_maximum, maar nu houd je een index bij in plaats van een waarde. Vergelijken doe je via lijst[max_index].

Welke startwaarde kies je voor max_index? Welke variabele update je bij een nieuwe winnaar?

Loop door de lijst met enumerate zodat je in elke ronde zowel de huidige index als de huidige waarde hebt.

Antwoord
def vind_index_van_maximum(lijst):
max_index = 0
for i, waarde in enumerate(lijst):
if waarde > lijst[max_index]:
max_index = i
return max_index

Waarom > en niet >=?

  • > → bij gelijke waardes blijft de eerste index staan.
  • >= → bij gelijke waardes wordt de laatste index gepakt.

Beide zijn geldige keuzes — kies bewust.

Onderzoek

Wat als alle elementen gelijk zijn? Welke index krijg je terug?

Bijvoorbeeld vind_index_van_maximum([7, 7, 7, 7]). Probeer het in de code-omgeving hierboven.

Met de >-versie krijg je 0 terug — de eerste 7 wint, want geen latere waarde is strict groter. Met >= zou je 3 krijgen — de laatste.

Geen van beide is "fout". Het is een ontwerpkeuze: bij gelijke waardes, welke positie tel je als de winnaar? In de praktijk kies je meestal de eerste, want dat is voorspelbaarder en past bij hoe lineair zoeken werkt.

Uitdaging (optioneel)

Schrijf vind_alle_indexen_van_maximum(lijst) die een lijst van alle indexen returnt waar het maximum staat. Bijv. [5, 3, 5, 2, 5][0, 2, 4].

Door naar stap 9: veelgemaakte fouten.