Ga naar hoofdinhoud

Python len(): Een beginnersgids voor het tellen van elementen in Python

Leer hoe je de Python-functie len() gebruikt om snel de grootte te vinden van strings, lijsten, dictionaries en andere datastructuren. Ontdek praktische voorbeelden en veelvoorkomende fouten om te vermijden wanneer je met len() in je eigen code werkt.
· 6 min lezen

Verken met AI

De functie len() is een van de eerste hulpmiddelen waarop Python-programmeurs vertrouwen om data te inspecteren. Je bent len() vast al tegengekomen als je bezig bent met onze cursus Introduction to Python for Developers of onze vaardigheidstrack Python Programming Fundamentals.

In dit artikel laat ik je zien hoe len() in Python werkt voor alle veelvoorkomende datatypes, en waar je op moet letten als er iets misgaat.

Wat doet de Python-functie len()?

Je kunt de ingebouwde functie len() van Python gebruiken wanneer je wilt controleren hoeveel items iets bevat. Denk aan het tellen van het aantal elementen in een lijst of het aantal tekens in een string. Je kunt er ook de sleutels in een dictionary mee tellen. Er zijn allerlei toepassingen.

Zo gebruik je het in de meest basale vorm:

len(object)

Plaats simpelweg wat je wilt meten (zoals de dingen die ik hierboven noemde) op de plek van object.

len() gebruiken met veelvoorkomende Python-datatypes

Ik noemde hierboven een paar veelvoorkomende use-cases, maar die waren wat abstract. Laten we door gangbare voorbeelden lopen om de waarde van len() duidelijker te maken.

Tekens tellen in een string

Stel dat je de exacte lengte van een stukje tekst wilt weten, inclusief alle spaties en leestekens:

word = "Josef"
print(len(word))

Dit print 5, omdat het woord "Josef" (met een "f") uit vijf tekens bestaat.

Het aantal items in een lijst controleren

Als je wilt achterhalen hoeveel items een lijst bevat, gebruik je dit:

numbers = [10, 20, 30, 40, 50]
print(len(numbers))

Hier zie je 5 als output.

De grootte van een tuple opvragen

Tuples groeperen net als lijsten items, maar zijn immutabel: je kunt ze na het maken niet meer wijzigen. len() werkt hier ook:

dimensions = (1920, 1080)
print(len(dimensions))

Dit levert 2 op, omdat de tuple twee elementen bevat.

Sleutels tellen in een dictionary

Python-dictionaries draaien om key-valueparen. Als je len() op een dictionary gebruikt, telt het alleen de sleutels:

person = {"name": "Alice", "age": 30, "city": "Paris"}
print(len(person))

Je krijgt dus 3 (één per sleutel).

Unieke elementen in een set controleren

Sets zijn handig als je alleen unieke items wilt opslaan. len() vertelt je hoeveel:

colors = {"red", "green", "blue", "red"}
print(len(colors))

Dit geeft 3 terug, omdat "red" twee keer voorkomt maar één keer wordt geteld.

Hoe werkt len() onder de motorkap?

Misschien vraag je je net als ik af hoe len() de grootte bepaalt.

Onder water zoekt Python, wanneer je len() op een object aanroept, naar de __len__-methode van dat object. Ingebouwde types zoals lijsten, strings en dictionaries hebben deze methode allemaal.

Dit betekent dat als je je eigen klasse maakt en wilt dat len() ermee werkt, je zelf een __len__-methode moet definiëren:

class Box:
    def __init__(self, items):
        self.items = items

    def __len__(self):
        return len(self.items)

my_box = Box(["apple", "banana", "orange"])
print(len(my_box))

Hier geeft len() 3 terug, omdat de doos drie items bevat. Net als bij lijsten en strings past len() zich aan zolang het object een __len__-methode aanbiedt.

Wat gebeurt er als len() niet werkt?

Natuurlijk heeft niet alles in Python een lengte. Als je len() probeert te gebruiken op iets dat het niet ondersteunt (ik laat het zo zien met een int-datatype), laat Python dat weten met een TypeError. Dit komt vaak voor, zeker als je met gemengde datatypes werkt. Bijvoorbeeld:

num = 42 
print(len(num))

Dit triggert de volgende fout:

TypeError: object of type 'int' has no len()

Wanneer je dit ziet, controleer dan of het object dat je meet daadwerkelijk een container of sequentie is (string, lijst of dictionary) en niet een enkele waarde zoals een integer of float.

Handige use-cases voor len()

Laten we de voorbeelden nu iets realistischer maken voor alledaagse programmeersituaties.

Lussen met een range

Als je door een lijst wilt loopen met behulp van de indices, helpt len() je om het juiste bereik voor je lus in te stellen:

fruits = ["apple", "banana", "cherry"]

for i in range(len(fruits)):
    print(f"Index {i}: {fruits[i]}")

Dit print elk stuk fruit samen met zijn index, zodat je zowel volgorde als context hebt.

Index 0: apple
Index 1: banana
Index 2: cherry

Controleren op lege containers

Vaak wil je weten of een container—zoals een lijst of dictionary—leeg is voordat je verdergaat:

cart = []

if len(cart) == 0:
    print("Your shopping cart is empty.")

Met dit patroon voorkom je fouten of onnodige verwerking als er niets is om mee te werken.

Lange strings inkorten

Als je met gebruikersinvoer werkt of labels toont, wil je de lengte van strings soms beperken. len() helpt je die grenzen te handhaven:

username = "superlongusername"

if len(username) > 10:
    username = username[:10]
    print(username)

Hier wordt elke gebruikersnaam langer dan 10 tekens ingekort.

Veelgemaakte fouten met len()

len() kan je parten spelen, zelfs als je al wat Python-ervaring hebt:  

  • len() proberen te gebruiken op integers of floats: Getallen zijn geen collecties, dus ze hebben geen lengte.

  • Vergeten dat len() items telt, geen waarden: In een dictionary telt len de sleutels—ook als meerdere sleutels naar dezelfde waarde verwijzen.

  • Aannemen dat len() overal op werkt: Aangepaste klassen hebben een __len__-methode nodig; anders weet len() niet wat het moet doen.

Onthoud deze regels om tijd te besparen bij het debuggen.

Fouthandling met len()

Omdat len() een TypeError kan opleveren bij verkeerd gebruik, is het verstandig je code hierop voor te bereiden, zeker wanneer je met onvoorspelbare data werkt. Een try-except-blok is een eenvoudige manier om zulke fouten netjes af te handelen:

data = 123

try:
    print(len(data))
except TypeError:
    print("Object has no length.")

In plaats van te crashen, print je programma nu een vriendelijke boodschap. Onze cursus Object-Oriented Programming in Python is een geweldige bron om hierin bedreven te raken. 

len() gebruiken met aangepaste klassen

Laten we terugkomen op aangepaste klassen. Een aangepaste klasse is elke klasse die je zelf definieert met het trefwoord class—zoals wanneer je iets models dat specifiek is voor je programma, zoals een Team, Box of Library. Eerder zag je dat len() werkt op ingebouwde types zoals lijsten en dictionaries omdat ze een speciale methode implementeren die __len__() heet. Hetzelfde geldt voor je eigen klassen. Als je wilt dat len() erop werkt, moet je __len__() zelf definiëren.

Ik wil je niet vermoeien met een technisch detail. Ik vind het het vermelden waard omdat het belangrijk is wanneer je aangepaste datacontainers bouwt die zich moeten gedragen als native Python-collecties. Door len() te ondersteunen, kunnen je objecten natuurlijker samenwerken met de rest van het Python-ecosysteem, inclusief andere functies en libraries.

Hier is een korte samenvatting:

class Team:
    def __init__(self, players):
        self.players = players

    def __len__(self):
        return len(self.players)

my_team = Team(["Alice", "Bob", "Cathy"])
print(len(my_team))

Ook nu geeft len() 3 terug, wat klopt, want dit is het aantal spelers in je team.

Conclusie

De volgende keer dat je iets in Python wilt tellen, meten of de grootte wilt controleren, onthoud dan dat len() een prima optie is.

Maar nu we aan het eind zijn, wil ik nog iets belangrijks noemen. We hebben ons op één functie gericht, maar in Python zijn er bijna altijd meerdere manieren om iets te doen. We hebben een artikel dat zelfs verschillende manieren laat zien om de lengte van een lijst te vinden, waarvan de functie len() er slechts één is: Python List Size: 8 Different Methods for Finding the Length of a List in Python.

Blijf nieuwe methoden oefenen. Het is een zekere manier om je tot een sterkere programmeur te maken. En vergeet niet je in te schrijven voor onze vaardigheidstrack Python Programming, die je leert hoe je code optimaliseert, functies en tests schrijft, en nog veel meer.

Josef Waples

Auteur

Josef Waples

Ik ben een schrijver en editor op het gebied van data science en heb bijgedragen aan onderzoeksartikelen in wetenschappelijke tijdschriften. Ik ben vooral geïnteresseerd in lineaire algebra, statistiek, R en dergelijke. Ik speel ook best wat schaak! 

Onderwerpen

Gerelateerd