🧠 Denkoefening - Lijst vs. verzameling

Een lijst en een verzameling lijken erg op elkaar. Wat zijn precies de verschillen?

💡 Hint

Het is belangrijk om de juiste datastructuur te kiezen om een probleem, oplossing of situatie voor te stellen. Een lijst is meer geschikt wanneer je over de elementen wil itereren in een bepaalde volgorde. Een verzameling is meer geschikt wanneer je wil nagaan of een element deel uitmaakt van je verzameling.

🧠 Denkoefening - Lijst of verzameling?

Hier volgen enkele denkvragen, waarbij je zelf moet redeneren welke datastructuur het best geschikt is voor welke situatie: een lijst of een verzameling. De antwoorden vind je onderaan deze pagina, maar denk eerst zelf goed na vooraleer je gaat kijken.

  • Welke datastructuur gebruik je om de klinkers van het alfabet voor te stellen?

klinkers

  • Welke datastructuur gebruik je om de kleuren van de Belgische vlag voor te stellen?

belgium

  • Welke datastructuur gebruik je om een chronologisch overzicht van de burgemeesters van Gent voor te stellen?

burgemeester

  • Welke datastructuur gebruik je om de rugnummers van de geselecteerde spelers van Patro Eisden (voetbal) voor te stellen?

voetbaltruitje

Oplossingen denkoefening

  • De klinkers van het alfabet stel je best voor door een verzameling. De volgorde maakt niet uit, het is enkel belangrijk dat alle klinkers erin zitten. Één klinker kan geen twee keer voor komen.
  • De kleuren van de Belgische vlag stel je best voor door een lijst. De volgorde is hier van belang, en hoewel dat bij de Belgische vlag niet zo is kan één kleur meerdere keren voorkomen in een vlag (bijvoorbeeld in de Spaanse vlag of de Oostenrijkse vlag).
  • De burgemeesters van Gent stel je best voor door een lijst. De volgorde is belangrijk, en één burgemeester kan meerdere ambtstermijnen gehad hebben.
  • De rugnummers van de spelers van Patro Eisen stel je best voor door een verzameling. Er zit geen vaste volgorde in de geselecteerde spelers en elk rugnummer kan slechts één keer voorkomen, geen twee spelers spelen met hetzelfde nummer.

👀 Voorbeeld - Dieren van Pairi Daiza

Je kan over een lijst itereren met een for-lus. Voor een verzameling werkt dat op een gelijkaardige manier. Er is één belangrijk verschil: over de elementen uit de verzameling wordt er niet altijd in dezelfde volgorde geïtereerd. Bijvoorbeeld, als we de dieren van Pairi Daiza in een lijst of in een verzameling gieten, en er dan over itereren, is de volgorde in de twee iteraties verschillend.

Probeer de code eens verschillende keren na elkaar uit in de sandbox.

# De dieren als een lijst
lijst = ['tijger', 'ijsbeer', 'pinguin', 'damhert', 'walrus', 'neushoorn', 'gorilla']
# Dezelfde dieren als een verzameling
verz = {'tijger', 'ijsbeer', 'pinguin', 'damhert', 'walrus', 'neushoorn', 'gorilla'}
# Itereren
print('Itereer over de lijst')
for dier in lijst:
    print(dier)

print('Itereer over de verzameling')
for dier in verz:
    print(dier)

zoo

💡 Hint

Soms kan de volgorde van de iteratie over een verzameling toch overeenkomen met hoe die elementen in de verzameling worden voorgesteld. Dit is louter toevallig. De elementen in een verzameling hebben namelijk geen volgorde.

💻 Programmeeroefening - Kan ik dit dier gaan bekijken?

Zowel voor een lijst als voor een verzameling kan je nagaan of een element deel uitmaakt van die lijst of verzameling. Bijvoorbeeld,

# De dieren als een lijst
lijst = ['tijger', 'ijsbeer', 'pinguin', 'damhert', 'walrus', 'neushoorn', 'gorilla']
# Dezelfde dieren als een verzameling
verz = {'tijger', 'ijsbeer', 'pinguin', 'damhert', 'walrus', 'neushoorn', 'gorilla'}
# Elementen nagaan
print('Zit pinguin in de lijst van dieren?', 'pinguin' in lijst)

Kopieer en plak deze code in de editor onderaan, pas ze aan zodat de verzameling gebruikt wordt om te controleren of 'pinguin' bij de dieren hoort.

🧐 Wist je dat

…een computer veel sneller kan controleren of een element in een verzameling zit, dan of een element in een lijst zit?

Daarom zullen we bij voorkeur een verzameling gebruiken in plaats van een lijst, bij situaties waar beiden mogelijk zijn.