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.12 Itertools voor Geavanceerde Iteraties

3.12 Itertools voor Geavanceerde Iteraties

2 minuten leestijd

De itertools module in Python is als een gereedschapskist voor het werken met iteraties. Het biedt krachtige tools waarmee je efficiënter kunt werken met data, vooral als je complexe patronen wilt doorlopen of met grote datasets werkt. Of je nu combinaties wilt genereren, items wilt groeperen, of oneindige reeksen wilt maken, itertools heeft het allemaal! 🚀

Combinaties en Permutaties #

Wat zijn combinaties en permutaties? #

  • Combinaties: Verzamelingen van items waarbij de volgorde niet belangrijk is.
    • Voorbeeld: De combinaties van ['A', 'B', 'C'] in paren zijn: ('A', 'B'), ('A', 'C'), ('B', 'C').
  • Permutaties: Volgordes van items waarbij de volgorde wel belangrijk is.
    • Voorbeeld: De permutaties van ['A', 'B', 'C'] in paren zijn: ('A', 'B'), ('B', 'A'), ('A', 'C'), enzovoort.

Hoe gebruik je combinaties en permutaties? #

Met itertools.combinations() en itertools.permutations() kun je deze eenvoudig genereren.

Voorbeeld: Combinaties

from itertools import combinations

items = ['A', 'B', 'C']
combs = combinations(items, 2)  
# Genereer combinaties van 2 items
for comb in combs:
    print(comb)
Python

Uitvoer:

('A', 'B')
('A', 'C')
('B', 'C')
Python

Voorbeeld: Permutaties

from itertools import permutations

items = ['A', 'B', 'C']
perms = permutations(items, 2)  
# Genereer permutaties van 2 items
for perm in perms:
    print(perm)
Python

Uitvoer:

('A', 'B')
('A', 'C')
('B', 'A')
('B', 'C')
('C', 'A')
('C', 'B')
Python

Efficiënte Iteratiepatronen #

Naast combinaties en permutaties biedt itertools een reeks tools voor geavanceerde iteratiepatronen. Hier zijn enkele van de meest gebruikte functies:

1. chain: Meerdere iterables samenvoegen #

Met itertools.chain() kun je meerdere iterables (zoals lijsten of tuples) aan elkaar koppelen alsof het één enkele iterable is.

Voorbeeld:

from itertools import chain

lijst1 = [1, 2, 3]
lijst2 = [4, 5, 6]
samengevoegd = chain(lijst1, lijst2)

for item in samengevoegd:
    print(item)
Python

Uitvoer:

1
2
3
4
5
6
Python

Waarom is dit handig?
Het bespaart geheugen omdat het de iterables niet kopieert, maar ze tijdens de iteratie naadloos aan elkaar koppelt.

2. groupby: Items groeperen op basis van een sleutel #

Met itertools.groupby() kun je items groeperen op basis van een gemeenschappelijke eigenschap. Dit is handig voor het analyseren van gesorteerde gegevens.

Voorbeeld:

from itertools import groupby

data = [('fruit', 'appel'), ('fruit', 'banaan'), ('groente', 'wortel'), ('groente', 'spinazie')]

# Groepeer items op basis van de eerste waarde
for key, group in groupby(data, lambda x: x[0]):
    print(key, list(group))
Python

Uitvoer:

fruit [('fruit', 'appel'), ('fruit', 'banaan')]
groente [('groente', 'wortel'), ('groente', 'spinazie')]
Python

Let op: De gegevens moeten gesorteerd zijn op de sleutel, anders werkt groupby niet zoals verwacht.

3. cycle: Oneindig door een iterable lopen #

Met itertools.cycle() kun je eindeloos door een iterable blijven itereren. Dit is perfect voor patronen die herhaald moeten worden.

Voorbeeld:

from itertools import cycle

kleuren = ['rood', 'groen', 'blauw']
cycler = cycle(kleuren)

for i in range(10):  # Laat het patroon 10 keer zien
    print(next(cycler))
Python

Uitvoer:

rood
groen
blauw
rood
groen
blauw
...tot in de oneindigheid
Python

Waarom is dit handig?
Bijvoorbeeld in games voor herhalende animaties of cycli.

Praktische Toepassingen #

1. Wachtwoordgenerator #

Genereer combinaties van karakters voor brute-force technieken (voor educatieve doeleinden, natuurlijk!).

Voorbeeld:

from itertools import product

karakters = 'abc'
lengte = 2
combinaties = product(karakters, repeat=lengte)

for comb in combinaties:
    print(''.join(comb))
Python

Uitvoer:

aa
ab
ac
ba
bb
bc
...
Python

2. Groeperen van datums #

Als je datums hebt en wilt groeperen op basis van een jaar, kun je groupby gebruiken.

Voorbeeld:

from itertools import groupby
from datetime import datetime

datums = [
    datetime(2023, 1, 1),
    datetime(2023, 3, 15),
    datetime(2024, 7, 4),
    datetime(2024, 12, 25)
]

# Groepeer datums per jaar
for jaar, groep in groupby(datums, lambda x: x.year):
    print(jaar, list(groep))
Python

Uitvoer:

2023 [datetime.datetime(2023, 1, 1), datetime.datetime(2023, 3, 15)]
2024 [datetime.datetime(2024, 7, 4), datetime.datetime(2024, 12, 25)]
Python

3. Alternatief tussen meerdere taken #

Gebruik cycle om herhaaldelijk door een lijst van taken te itereren.

Voorbeeld:

from itertools import cycle

taken = ['Task 1', 'Task 2', 'Task 3']
cycler = cycle(taken)

for i in range(6):
    print(next(cycler))
Python

Uitvoer:

Task 1
Task 2
Task 3
Task 1
Task 2
Task 3
Python

Samenvatting #

De itertools module is een schatkist vol krachtige tools voor geavanceerde iteratiepatronen. Met functies zoals combinations, permutations, chain, groupby, en cycle, kun je complexe bewerkingen uitvoeren met eenvoudige en efficiënte code. Of je nu datasets wilt groeperen, oneindige patronen wilt genereren, of combinaties wilt testen, itertools maakt het allemaal mogelijk.

Probeer de voorbeelden uit en ontdek hoe itertools je Python-programma’s slimmer en efficiënter maakt. 🚀🎉

Updated on december 23, 2024

What are your Feelings

3.11 Typing en Datatypes3.13 Data Conversies
Inhoudsopgave
  • Combinaties en Permutaties
    • Wat zijn combinaties en permutaties?
    • Hoe gebruik je combinaties en permutaties?
  • Efficiënte Iteratiepatronen
    • 1. chain: Meerdere iterables samenvoegen
    • 2. groupby: Items groeperen op basis van een sleutel
    • 3. cycle: Oneindig door een iterable lopen
  • Praktische Toepassingen
    • 1. Wachtwoordgenerator
    • 2. Groeperen van datums
    • 3. Alternatief tussen meerdere taken
  • 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