Ga naar hoofdinhoud

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
Python
Code-omgeving wordt voorbereid…
Tip

Twee dingen veranderen:

  1. Loop met enumerate door de lijst, dan heb je in elke ronde de index i én de waarde.
  2. Zet idx_klein op i op het moment dat je klein bijwerkt, en doe hetzelfde voor groot en 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 de vergelijkingen < en > zijn, komt er geen update bij gelijke waardes. Dus de eerste voorkomende wint.

Door naar bouw zelf.