Bouwsteen 2 — twee elementen ruilen
Hier bouw je op verder
- Python Tuples
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 er twee keer in.
Regel voor regel:
lijst[0] = lijst[3]overschrijft de 5 met de 1. De lijst is nu[1, 2, 8, 1, 4]en de 5 bestaat nergens meer.lijst[3] = lijst[0]zet er de 1 terug die daar al stond, dus er verandert niets.
De eerste toekenning maakte de 5 onbereikbaar.
Oplossing 1 — een tijdelijke variabele
Bewaar de waarde die je gaat overschrijven eerst 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
Je hebt nu twee bouwstenen: de kleinste-index vinden, en swappen. In de volgende stap wordt de eerste flexibeler, zodat hij vanaf een bepaalde positie kan zoeken in plaats van vanaf het begin.
Door naar bouwsteen 3: in een deel-lijst.