Skip to content
Programmeren in Python, leer de nieuwste technieken
Programmeren in PythonProgrammeren in Python
  • Home
  • Blog
  • Documentatie
  • Cursussen
Programmeren in PythonProgrammeren in Python
  • Home
  • Blog
  • Documentatie
  • Cursussen

Introductie

4
  • 1.1 Wat is Python?
  • 1.2 Python installatie
  • 1.2.1 Python installeren voor MacOS
  • 1.3 PyCharm Installatie

Basisprogrammering

6
  • 2.1 Python Basis: Variabelen, Datatypes en Operatoren
  • 2.2 Python if else (en elif)
  • 2.3 Python list (Array, Lijsten)
  • 2.4 Python Lussen: for loop, while loop, break, continue
  • 2.5 Python Functies: Definities, Parameters en Terugkeerwaarden
  • 2.6 Foutafhandeling: try, except, else, finally

Datatypes

13
  • 3.1 Introductie tot Geavanceerde Datatypes
  • 3.2 Python Tuple
  • 3.3 Python Set
  • 3.4 Python Dictionary
  • 3.5 Werken met Strings en String-methoden
  • 3.6 Collections Module: Krachtige Tools in Python
  • 3.7 Iterators en Generators
  • 3.8 List Comprehensions
  • 3.9 Geavanceerde Sortering
  • 3.10 Werken met Multi-dimensionale Data
  • 3.11 Typing en Datatypes
  • 3.12 Itertools voor Geavanceerde Iteraties
  • 3.13 Data Conversies

Modules

8
  • 4.1 Wat zijn Modules en Waarom zijn ze Belangrijk?
  • 4.2 Werken met Ingebouwde Modules
  • 4.3 Installeren en Gebruiken van Externe Pakketten
  • 4.4 Eigen Modules Maken
  • 4.5 Introductie tot Pakketten
  • 4.6 Importeren en Namespaces Begrijpen
  • 4.7 Geavanceerd: Relatief Importeren
  • 4.8 Organiseren van Grotere Projecten

Data Analyse

3
  • 5.1 Python Dataframe en Data Opschonen met Pandas
  • 5.2 Python Pandas Basisstatistieken en Data-analyse
  • 5.3 Python Numpy (NpArray): De Kracht van Numerieke Berekeningen

Webontwikkeling

5
  • 7.1 Inleiding tot Webontwikkeling
  • 7.2 HTTP-Verzoeken met requests: Communiceren met het Web
  • 7.3 Webscraping met BeautifulSoup: Data van het Web Halen als er geen APIs zijn
  • 7.4 Python Flask, een webserver & API tutorial
  • 7.5 WSGI & WebOb

Deploy

1
  • Deploy met Supervisor op Ubuntu

Object Georiënteerd Programmeren

8
  • Wat is Objectgeoriënteerd Programmeren (OOP) in Python?
  • Python class & object maken
  • self en __init__ uitgelegd (met voorbeelden)
  • Attributen afschermen: @property (getters/setters)
  • Overerving in Python + super() (en wanneer je het beter níet doet)
  • Dunder methods: __str__, __repr__, vergelijken (en waarom dit je OOP-code “Pythonic” maakt)
  • @dataclass: snelle nette classes (minder boilerplate, meer duidelijkheid)
  • OOP in de praktijk: design & structuur
View Categories
  • Home
  • Documentatie
  • Datatypes
  • 3.7 Iterators en Generators

3.7 Iterators en Generators

4 minuten leestijd

In Python zijn iterators en generators krachtige hulpmiddelen waarmee je op een slimme en efficiënte manier door gegevens kunt navigeren. Ze maken het mogelijk om grote hoeveelheden data te verwerken zonder alles in het geheugen te laden. Dit hoofdstuk legt uit wat iterators en generators zijn, hoe ze werken, en waarom ze een onmisbaar onderdeel van je Python-toolbox zijn! 🚀

Wat zijn iterators? #

Een iterator is een object in Python dat je kunt doorlopen (ook wel “itereren” genoemd). Dit betekent dat je er één voor één items uit kunt halen, zonder dat je alle items tegelijk in het geheugen hoeft te hebben.

Hoe werkt een iterator? #

  • Iterables: Een collectie zoals een lijst, tuple, string, of zelfs een bestand dat je kunt doorlopen, wordt een iterable genoemd.
  • Iterator: Een object dat de items in een iterable één voor één kan teruggeven, wordt een iterator genoemd.

Je maakt een iterator van een iterable door de ingebouwde functie iter() te gebruiken. Je haalt items eruit met next().

Voorbeeld:

mijn_lijst = [1, 2, 3]
iterator = iter(mijn_lijst)

print(next(iterator))  # Toont: 1
print(next(iterator))  # Toont: 2
print(next(iterator))  # Toont: 3
# print(next(iterator))  
# StopIteration-fout als er geen items meer zijn
Python

Wat gebeurt er onder de motorkap? #

Een for-lus gebruikt automatisch een iterator om door een iterable te navigeren:

for item in [1, 2, 3]:
    print(item)
Python

Hier gebruikt Python een verborgen iter() en next().

Generators #

Een generator is een speciale soort iterator die zijn items on-the-fly genereert, in plaats van alles vooraf in het geheugen te laden. Dit maakt generators extreem efficiënt, vooral als je met grote datasets werkt.

Hoe maak je een generator? #

Je kunt een generator maken door een functie te schrijven die het trefwoord yield gebruikt in plaats van return.

Voorbeeld:

def mijn_generator():
    yield 1
    yield 2
    yield 3

gen = mijn_generator()
print(next(gen))  # Toont: 1
print(next(gen))  # Toont: 2
print(next(gen))  # Toont: 3
Python

yield: Wanneer de generator yield tegenkomt, “pauzeert” hij en onthoudt hij waar hij gebleven is. Wanneer je hem weer oproept, gaat hij verder vanaf dat punt.

Efficiënt geheugenbeheer #

Generators slaan niet alle items tegelijk op in het geheugen. In plaats daarvan genereren ze elk item wanneer dat nodig is.

Voorbeeld met een grote reeks getallen:

# Generator die getallen tot n genereert
def maak_reeks(n):
    for i in range(n):
        yield i

gen = maak_reeks(1_000_000)  
# Geen geheugenprobleem, want het 
# genereert één item tegelijk
print(next(gen))  # Toont: 0
print(next(gen))  # Toont: 1
Python

Vergelijk dit met een lijst:

reeks = [i for i in range(1_000_000)]  
# Dit laadt alles in het geheugen
Python

Generator Expressions #

Een generator expression is een compacte manier om een generator te maken, vergelijkbaar met een list comprehension.

Verschil tussen list comprehensions en generator expressions:

  • List comprehension: Maakt een volledige lijst in het geheugen.
  • Generator expression: Genereert items één voor één.

Voorbeeld:

# List comprehension
lijst = [x**2 for x in range(5)]
print(lijst)  # Toont: [0, 1, 4, 9, 16]

# Generator expression
gen = (x**2 for x in range(5))
print(gen)  # Toont: <generator object>
print(next(gen))  # Toont: 0
print(next(gen))  # Toont: 1
Python

Praktisch gebruik van yield #

1. Oneindige reeksen #

Generators zijn perfect voor het genereren van oneindige data, zoals een Fibonacci-reeks.

Voorbeeld:

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

gen = fibonacci()
print(next(gen))  # Toont: 0
print(next(gen))  # Toont: 1
print(next(gen))  # Toont: 1
print(next(gen))  # Toont: 2
Python

2. Werken met grote bestanden #

Generators zijn ideaal voor het verwerken van grote tekstbestanden, omdat je één regel tegelijk kunt lezen zonder het hele bestand in het geheugen te laden.

Voorbeeld:

def lees_bestand(bestandsnaam):
    with open(bestandsnaam, "r") as bestand:
        for regel in bestand:
            yield regel.strip()

for regel in lees_bestand("groot_bestand.txt"):
    print(regel)
Python

Veelvoorkomende fouten en tips #

  1. Vergeet niet next() te gebruiken op een generator:
    Een generator geeft niets terug totdat je hem aanroept.
gen = (x for x in range(3))
# print(gen[0])  # Fout, generators hebben geen index
print(next(gen))  # Correct
Python

  1. Generators kunnen maar één keer worden doorlopen:
    Zodra je door een generator bent gegaan, is deze “opgebruikt.” Maak een nieuwe generator als je opnieuw wilt itereren.
  2. Gebruik yield in plaats van een lijst als je geheugen wilt besparen.

Samenvatting #

Iterators en generators maken het mogelijk om op een slimme, efficiënte manier met data te werken in Python. Iterators helpen je door collecties te navigeren, terwijl generators data genereren wanneer je ze nodig hebt, wat perfect is voor grote datasets of oneindige reeksen.

Met tools zoals yield en generator expressions kun je krachtige en geheugenbesparende oplossingen bouwen. Experimenteer met iterators en generators om te zien hoe ze je Python-programma’s kunnen verbeteren! 🚀🎉

Updated on december 23, 2024

What are your Feelings

3.6 Collections Module: Krachtige Tools in Python3.8 List Comprehensions
Inhoudsopgave
  • Wat zijn iterators?
    • Hoe werkt een iterator?
    • Wat gebeurt er onder de motorkap?
  • Generators
    • Hoe maak je een generator?
    • Efficiënt geheugenbeheer
    • Generator Expressions
  • Praktisch gebruik van yield
    • 1. Oneindige reeksen
    • 2. Werken met grote bestanden
  • Veelvoorkomende fouten en tips
  • Samenvatting
Programmeren in Python

Leer python op je eigen tempo met mooie interactieve hedendaagse voorbeelden.

© Copyright 2026 Programmeren in Python.
Sign inSign up

Sign in

Don’t have an account? Sign up
Lost your password?

Sign up

Already have an account? Sign in