← Python/Verzamelen en veranderen
Les 1 van 8
MODULE 04 · 01◷ 24 min

Verander een lijst bewust

Na deze les kun je
  • Een lijst op positie lezen
  • Een bestaande lijst wijzigen
  • Mutatie en retourwaarde uit elkaar houden

Je houdt een lijst met uitstapjes bij. Er komt een bezoek bij, een bestemming verandert en de laatste afspraak vervalt. Met een lijst kun je die veranderingen op dezelfde verzameling uitvoeren, zodat de rest van je programma het bijgewerkte plan ziet.

Volgorde en posities

Een lijst bewaart waarden in een bepaalde volgorde. Je maakt haar met vierkante haken, bijvoorbeeld ["museum", "park"]. De komma scheidt de elementen; hier zijn dat twee teksten.

Een index is de positie waarmee je één element kiest. Python begint bij nul: visits[0] leest het eerste element en visits[1] het tweede. Met visits[-1] lees je het laatste element, ongeacht de lengte van de lijst.

Lezen verandert de lijst niet. Een niet-bestaande positie geeft een IndexError: er staat geen element op die plek. De opdrachten met een eerste of laatste element krijgen daarom altijd een niet-lege lijst.

Een bestaand plan aanpassen

Een lijst is veranderbaar. Met plan[0] = "bibliotheek" vervang je een element van de bestaande lijst. Zo'n verandering aan een bestaand object heet mutatie.

Druk op Voorbeeld uitvoeren. Let apart op de retourwaarde van de functie en op de lijst na de aanroep: dat zijn twee verschillende dingen die je kunt controleren.

Hetzelfde uitstapjesplan aanpassen
def update_plan(plan):
    plan[0] = "bibliotheek"
    plan.append("markt")

visits = ["museum", "park"]
result = update_plan(visits)
print(result)
print(visits)
removed = visits.pop()
print(removed)
print(visits)
print(visits[-1])
Verwachte uitvoer
None
['bibliotheek', 'park', 'markt']
markt
['bibliotheek', 'park']
park

De parameter plan verwijst tijdens de aanroep naar dezelfde lijst als visits. De functie hoeft die lijst dus niet terug te geven om haar te veranderen. De aanroeper ziet de verandering via zijn eigen naam.

HandelingInhoud van de lijst daarnaAntwoord van de handeling
Eerste bezoek vervangenbibliotheek, parkGeen apart antwoord
append("markt")bibliotheek, park, marktNone
pop()bibliotheek, park"markt"

De methode append voegt één element achteraan toe en geeft None terug. Dat betekent hier niet dat het toevoegen is mislukt. De gewijzigde lijst is het effect van de handeling.

De methode pop doet juist twee dingen: zij verwijdert het laatste element en geeft dat element terug. Bewaar haar resultaat wanneer je wilt weten wat is verwijderd. Een index zoals visits[-1] leest alleen en laat het element staan.

Veelgemaakte fout: alleen de lokale naam veranderen

Je kent lokale namen uit de functiemodule. Hetzelfde onderscheid speelt bij lijsten: een naam aan een andere lijst koppelen is iets anders dan de bestaande lijst veranderen. Deze zelfstandige foutvariant toont een uitbreiding die buiten de functie verdwijnt.

Alleen de lokale naam krijgt een nieuwe lijst
def add_visit(plan):
    plan = plan + ["markt"]
    print(plan)

visits = ["museum", "park"]
add_visit(visits)
print(visits)
Verwachte uitvoer
['museum', 'park', 'markt']
['museum', 'park']

Binnen de functie staan drie bezoeken, maar buiten de functie nog twee. plan + ["markt"] heeft een nieuwe lijst gemaakt en de toekenning koppelt alleen de lokale naam plan daaraan. De oorspronkelijke lijst bij de aanroeper is niet uitgebreid.

Kies daarom eerst het contract van je functie. Moet de aanroeper een wijziging aan zijn bestaande lijst zien, gebruik dan een handeling die die lijst verandert. Moet de functie een apart resultaat opleveren, dan kan een nieuwe lijst juist passend zijn.

Controleer effect én antwoord

De opdrachten laten je lezen, vervangen, toevoegen en verwijderen afzonderlijk oefenen. Bij veranderen zonder apart antwoord hoort de retourwaarde None; bij verwijderen vraagt de opdracht juist om het weggenomen element. De tests controleren zowel het antwoord als wat bij de aanroeper overblijft.

Bij een lijst met één element zijn de eerste en laatste waarde dezelfde. Na het verwijderen van dat element blijft een lege lijst over. Gebruik de afgesproken indices en methoden ook voor die kleine gevallen.

AAN DE SLAG 0/4
1

Lees de twee uiteinden

Laat edges de eerste en laatste waarde als tuple teruggeven.

2

Wijzig op dezelfde plek

Laat replace_first de eerste waarde vervangen en None teruggeven.

3

Voeg echt iets toe

Laat append_item de lijst bij de aanroeper uitbreiden en None teruggeven.

4

Verwijder én geef terug

Laat take_last het laatste element verwijderen en dat element teruggeven.

Wat je meeneemt

  • Lijstposities beginnen bij nul; min één kiest het laatste element.
  • Een mutatie verandert het bestaande object en kan zichtbaar zijn via andere namen.
  • Controleer de retourwaarde en de wijziging afzonderlijk: append en pop hebben verschillende afspraken.

Hierna kies je delen van een lijst en onderzoek je wanneer twee namen dezelfde lijst delen.

main.py
UitvoerPython
›
›_

Hier komt je resultaat.

Voer je code uit en ontdek
wat je hebt gemaakt.

0/4 stappen
EVEN MEEKIJKEN

Bekijk hoe het kan.

Je mag de oplossing bekijken. Deze poging telt dan niet mee als afgeronde les. Met Reset kun je daarna opnieuw zelf oefenen.