Aanpassen — ook de indexen teruggeven
Leerdoel: je breidt de tuple uit van 2 naar 4 waardes — klein, de
index van klein, groot, en de index van groot.
Opdracht
Pas max_en_min aan zodat hij vier waardes returnt:
(klein, idx_klein, groot, idx_groot)
Voor [5, 2, 8, 1, 7, 4] moet het resultaat (1, 3, 8, 2) zijn:
- klein = 1, staat op index 3
- groot = 8, staat op index 2
Code-omgeving wordt voorbereid…
Tip
Twee dingen veranderen:
- Gebruik
enumeratezodat je in elke ronde de indexién de waarde hebt. - Wanneer je
kleinupdatet, update je ookidx_kleinnaari. Idem voorgroot/idx_groot.
Antwoord
def max_en_min_met_index(lijst):
klein = groot = lijst[0]
idx_klein = idx_groot = 0
for i, waarde in enumerate(lijst):
if waarde < klein:
klein = waarde
idx_klein = i
elif waarde > groot:
groot = waarde
idx_groot = i
return klein, idx_klein, groot, idx_groot
Twee extra regels (idx_klein = i en idx_groot = i) en de wisseling van
for waarde in lijst naar for i, waarde in enumerate(lijst). De rest
blijft hetzelfde.
Aandachtspunt — duplicaten
Wat gebeurt er bij [1, 5, 1, 5]? Welke index krijg je voor klein? En
voor groot?
Antwoord
idx_klein = 0(eerste 1).idx_groot = 1(eerste 5).
Omdat we < en > (strict) gebruiken, updaten we niet bij gelijke
waardes. Dus de eerste voorkomende wint.
Door naar stap 8: bouw zelf →