Aanpassen — ook de indexen teruggeven
Hier bouw je op verder
Leerdoel: je breidt de tuple uit van 2 naar 4 waardes — klein, de
de index van klein, groot, en de index van groot.
Opdracht
Pas max_en_min aan zodat hij vier waardes teruggeeft:
(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:
- Loop met
enumeratedoor de lijst, dan heb je in elke ronde de indexién de waarde. - Zet
idx_kleinopiop het moment dat jekleinbijwerkt, en doe hetzelfde voorgrootenidx_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 de vergelijkingen < en > zijn, komt er geen update bij gelijke
waardes. Dus de eerste voorkomende wint.
Door naar bouw zelf.