Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Werkboek — Hoofdstuk 5: Lijsten (list)

Let op: alle programmacode schrijf je in het Engels (zoals in het boek). De uitleg en opdrachten zijn in het Nederlands.

Doel van dit hoofdstuk

  • Lijsten maken en lezen: literals, list(...), lengte, indexen, slices.
  • Lijsten muteren: toekennen aan index/slice, append, extend, insert, remove, pop, del, clear.
  • Zoeken en itereren: in, index, count, for, enumerate.
  • Sorteren: list.sort, sorted, reverse, key.
  • Kopiëren vs aliasing; 2D-lijsten (valkuil vermenigvuldiging); lijstcomprehensies.

Richtlijnen

  • Gebruik duidelijke naamgeving (Engels) en toon heldere output waar zinvol.
  • Schrijf kleine, goed-gestructureerde stukjes code; voeg korte comments toe bij keuzes.
  • Vermijd het muteren van een lijst terwijl je er rechtstreeks over iterereert (tenzij expliciet gevraagd en veilig gemaakt).

Oefening 1 — Basis maken en lezen Maak een lijst fruits = ["apple", "banana", "cherry"].

  • Print de lengte.
  • Print het eerste en laatste element met index en met negatieve index.

Oefening 2 — Slices Gegeven nums = [10, 20, 30, 40, 50, 60]:

  • Print nums[1:4] en nums[:3] en nums[3:].
  • Maak rev als omgekeerde kopie met een slice en print die.

Oefening 3 — Mutatie met index en slice Start met items = [1, 2, 3, 4, 5].

  • Vervang het element op index 1 door 20.
  • Vervang de slice items[2:4] door [7, 8, 9].
  • Voeg vervolgens met slice-insert op positie 2 de waarden [100, 101] toe (zonder te verwijderen). Print het resultaat na elke stap.

Oefening 4 — Toevoegen en verwijderen Start met colors = ["red"].

  • Voeg met append en extend respectievelijk "green" en "blue", "green" toe.
  • Verwijder één keer "green" met remove (let op: verwijdert de eerste match).
  • Gebruik pop() om het laatste element te verwijderen en te printen.
  • Toon de uiteindelijke lijst.

Oefening 5 — Zoeken en membership Gegeven letters = ["a", "b", "a", "c", "a"]:

  • Print of "b" in de lijst zit (Booleans).
  • Print de index van de eerste "a" en het aantal "a"'s.

Oefening 6 — Iteratie en enumerate Gegeven names = ["Ava", "Bo", "Cid"]:

  • Print elke naam op een aparte regel.
  • Print daarna genummerd met enumerate(..., start=1) in de vorm 1. Ava etc.

Oefening 7 — Sorteren met key en reverse Gegeven names = ["bo", "Ava", "cid", "Dia"]:

  • Print een nieuwe alfabetisch gesorteerde lijst, hoofdletterongevoelig.
  • Print een aflopende sortering op lengte (langste eerst), bij gelijke lengte alfabetisch. Tip: gebruik sorted(names, key=str.lower) en een key met een tuple, plus reverse=True waar nodig.

Oefening 8 — Kopiëren vs. aliasing

  • Maak original = [1, 2, 3] en zet alias = original.
  • Voer alias.append(4) uit en print beide.
  • Maak vervolgens een échte kopie met copy = original[:] en voeg 5 toe aan copy. Print beide om het verschil te tonen.

Oefening 9 — 2D‑lijst: vermenigvuldigingsvalkuil

  • Maak een 2×3-matrix met nullen op een foute manier: m = [[0] * 3] * 2.
  • Zet m[0][0] = 1 en print m — observeer de bug.
  • Maak dezelfde matrix correct met een list comprehension en herhaal de wijziging; toon nu het juiste gedrag.

Oefening 10 — Lijstcomprehensies (filter + transform)

  • Bouw met een list comprehension een lijst squares met de kwadraten van 0..10.
  • Bouw met een comprehension een lijst evens met de even getallen uit range(0, 21).
  • Bouw met een comprehension labels "even"/"odd" voor 0..5 met een inline voorwaardelijke expressie.

Uitdaging (optioneel) — Unieke elementen met behoud van volgorde Schrijf een functie unique_in_order(items) die de eerste keer dat een item voorkomt behoudt en latere duplicaten overslaat, waarbij de oorspronkelijke volgorde behouden blijft.

  • Voorbeeld: unique_in_order(["a","b","a","c","b"]) → ["a","b","c"].
  • Gebruik geen set voor directe conversie, want dat verliest volgorde; gebruik een hulp-set() om gezien te markeren en bouw een nieuwe lijst op.