Bouwsteen 2 — twee elementen ruilen
Leerdoel: je kunt twee elementen in een lijst van plek wisselen zonder een waarde te verliezen.
Wat we willen
Twee elementen in een lijst van plaats laten ruilen. Bijvoorbeeld:
[5, 2, 8, 1, 4] → swap index 0 en 3 → [1, 2, 8, 5, 4]
Een veelgemaakte beginnersfout
Probeer dit te volgen. Wat denk je dat eruit komt?
lijst = [5, 2, 8, 1, 4]
lijst[0] = lijst[3]
lijst[3] = lijst[0]
print(lijst)
Antwoord — verwacht je dit?
[1, 2, 8, 1, 4]
De 5 is weg! En de 1 staat twee keer.
Wat ging er mis? Regel-voor-regel:
lijst[0] = lijst[3]→lijst[0](5) wordt overschreven metlijst[3](1). Lijst is nu[1, 2, 8, 1, 4]. De 5 bestaat niet meer.lijst[3] = lijst[0]→lijst[3]wordtlijst[0](nu 1). Geen verandering.
De eerste toekenning maakte de 5 onbereikbaar.
Oplossing 1 — een tijdelijke variabele
Bewaar de waarde die je gaat overschrijven in een tijdelijke variabele:
tijdelijk = lijst[0]
lijst[0] = lijst[3]
lijst[3] = tijdelijk
Drie regels. Werkt op alle programmeertalen.
Oplossing 2 — Pythonisch: tuple-swap
Python heeft een veel kortere notatie:
lijst[0], lijst[3] = lijst[3], lijst[0]
Eén regel. Python evalueert eerst de rechterkant tot een tuple
(lijst[3], lijst[0]) en kent die dan toe aan de linkerkant. Geen
informatieverlies, want de waardes zijn al in het tuple opgeslagen voor
de overschrijving begint.
Voorspel
Wat denk je dat dit print?
lijst = [5, 2, 8, 1, 4]
lijst[0], lijst[3] = lijst[3], lijst[0]
print(lijst)
Antwoord
[1, 2, 8, 5, 4]
lijst[0] en lijst[3] zijn netjes geruild. Geen waarde verloren.
Run
Experimenteer
Probeer ook met de tijdelijke-variabele versie. Zelfde resultaat?
Wat nu nog mist
We hebben twee bouwstenen: kleinste-index vinden, en swappen. In de volgende stap maken we de eerste flexibeler — we willen kunnen zoeken vanaf een bepaalde positie in plaats van vanaf het begin.
Door naar bouwsteen 3: in een deel-lijst →