Competitive Programming Academy · Les

De index vinden, niet alleen de waarde

Posities bijhouden met enumerate

Les 4 van 413 stappen

De index vinden, niet alleen de waarde is een gratis Competitive Programming Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Competitive Programming Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Competitive Programming Academy bevat in totaal 4 lessen.

Posities zijn belangrijk

Vaak is het antwoord niet de waarde, maar waar die staat. Wedstrijdopgaven vragen vaak om een 1-gebaseerde of 0-gebaseerde index, dus houd posities bij.

a = [4, 1, 7, 3]

Vinden met .index()

a.index(x) geeft de positie van de eerste overeenkomst terug. Het is snel geschreven, maar doorloopt de lijst van links naar rechts in O(n).

pos = a.index(7)  # 2

Ontbrekende waarden veroorzaken fouten

Als de waarde ontbreekt, veroorzaakt .index() een ValueError, oftewel een crash tijdens de uitvoering. Controleer eerst of de waarde voorkomt als je het niet zeker weet.

if x in a:
    pos = a.index(x)

Lussen met enumerate

enumerate geeft je bij elke stap tegelijk de index en de waarde: de nette manier om posities bij te houden terwijl je door de lijst loopt.

for i, v in enumerate(a):
    print(i, v)

enumerate bij één laten beginnen

Veel beoordelaars verwachten 1-gebaseerde posities. Geef start=1 mee aan enumerate, zodat de eerste index 1 is en overeenkomt met de opgave.

for i, v in enumerate(a, start=1):
    ...

Index van het maximum

Als je wilt weten waar het maximum staat, doorloop je de array en onthoud je de beste index, want max(a) geeft alleen de waarde.

best = 0
for i, v in enumerate(a):
    if v > a[best]:
        best = i

Een handige argmax

Een compacte truc: koppel elke index aan zijn waarde en neem het maximum op basis van de waarde. De range geeft de positie rechtstreeks.

best = max(range(len(a)), key=lambda i: a[i])

Alle overeenkomende indices verzamelen

Heb je elke positie van een waarde nodig? Een comprehensie over enumerate verzamelt alle overeenkomsten in één regel.

idx = [i for i, v in enumerate(a) if v == 7]

Een waarde aan een index koppelen

Maak voor herhaalde zoekopdrachten één keer een dict van waarde naar index. Elke volgende zoekopdracht wordt dan een treffer in O(1).

where = {v: i for i, v in enumerate(a)}

Let op met duplicaten

Een dict van waarde naar index behoudt alleen de laatste overeenkomst. Gebruik een lijst per sleutel of enumerate als duplicaten belangrijk zijn.

where = {}
for i, v in enumerate(a):
    where.setdefault(v, []).append(i)

Tussen indexbasissen omzetten

Let op de basis: als je 0-gebaseerde indices hebt opgeslagen maar 1-gebaseerde indices moet afdrukken, tel je één op. Basissen door elkaar halen leidt stilletjes tot een fout antwoord.

print(pos + 1)  # 0-based to 1-based

Snelle controle

Je wilt 1-gebaseerde posities tijdens het lussen. Wat schrijf je?

Samenvatting: posities bijhouden

Je kunt nu afzonderlijke indices, maxima en alle overeenkomsten vinden en waarden veilig aan posities koppelen. enumerate is je betrouwbare positiebijhouder. 🎯

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “De index vinden, niet alleen de waarde” gratis?

Ja — de volledige tekst van “De index vinden, niet alleen de waarde” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Competitive Programming Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Competitive Programming Academy bevat in totaal 4 lessen.

Wat leer ik in “De index vinden, niet alleen de waarde”?

Posities bijhouden met enumerate Je oefent met Competitive Programming Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Competitive Programming Academy te beginnen?

Ervaring vooraf is niet nodig. Competitive Programming Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “De index vinden, niet alleen de waarde”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Competitive Programming Academy?

Ja. Elke les over Competitive Programming Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Lijsten, indexering en slicing voor CP
  2. Snel arrays bouwen met comprehensions
  3. Min, max, som en lopende totalen
  4. De index vinden, niet alleen de waarde
← Terug naar Competitive Programming Academy