Cheatsheet — vind het maximum
Snelle referentie. Klap open wat je nodig hebt.
Het algoritme zelf
Canonieke implementatie
def vind_maximum(lijst):
maximum = lijst[0]
for waarde in lijst:
if waarde > maximum:
maximum = waarde
return maximum
Variant met enumerate (ook index bijhouden)
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
Variant: minimum vinden
def vind_minimum(lijst):
minimum = lijst[0]
for waarde in lijst:
if waarde < minimum:
minimum = waarde
return minimum
Eén teken verschil met vind_maximum (> → <).
Het accumulator-patroon
Algemeen recept
accumulator = startwaarde_van_eerste_element
for waarde in lijst:
if <iets bijzonders aan waarde>:
accumulator = <update>
return accumulator
Gebruikt voor: maximum, minimum, som, product, aantal-tellen, …
Python-syntax
Toekennen vs. vergelijken
=→ toekennen (x = 5)==→ vergelijken (if x == 5)<,>,<=,>=,!=→ andere vergelijkingen
Slicing (deel van een lijst)
lijst[1:] # alles vanaf index 1
lijst[:3] # alles tot (niet inclusief) index 3
lijst[1:3] # index 1 en 2
lijst[-1] # laatste element
lijst[::-1] # omgedraaide lijst
enumerate — index én waarde
for i, waarde in enumerate(lijst):
print(i, waarde)
Python heeft een ingebouwde max()
print(max([3, 7, 2, 9, 4])) # 9
print(max([])) # ValueError
print(max("hallo")) # 'o'
In productie-code gebruik je vaak gewoon max() van Python. Maar de
oefening is om hem zelf te bouwen — zodat je het patroon snapt.
Eigenschappen
Wanneer werkt het?
- Op niet-lege lijsten.
- Op alles dat onderling vergeleken kan worden met
<en>(getallen, strings, tuples). - Niet op gemengde types (
1versus"twee"→TypeError).
Hoe snel?
- Elke positie wordt één keer bekeken.
nelementen →n − 1vergelijkingen (ofnals jelijst[0]ook meedoet).- O(n).
Lege-lijst-keuze
- Return
None→ "geen maximum bestaat". raise ValueError→ aanroeper móet ermee dealen.- Geen check → crash met
IndexError. Niet doen in productie-code.
Veelgemaakte fouten (snel)
Top-3 fouten
maximum = 0als startwaarde → mist negatieve lijsten.maxals variabelenaam → schaduwt de ingebouwdemax().- Geen lege-lijst-check →
IndexErrorbijlijst[0].
Klaar? Probeer ook max én min in één pass → — hetzelfde patroon, twee keer tegelijk.