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.
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.
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:
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:
classBox:def__init__(self, items):
self.items = items
def__len__(self):returnlen(self.items)
my_box = Box(["apple","banana","orange"])print(len(my_box))Mogelijk gemaakt door
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:
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 inrange(len(fruits)):print(f"Index {i}: {fruits[i]}")Mogelijk gemaakt door
Dit print elk stuk fruit samen met zijn index, zodat je zowel volgorde als context hebt.
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"iflen(username)>10:
username = username[:10]print(username)Mogelijk gemaakt door
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 =123try:print(len(data))except TypeError:print("Object has no length.")Mogelijk gemaakt door
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:
classTeam:def__init__(self, players):
self.players = players
def__len__(self):returnlen(self.players)
my_team = Team(["Alice","Bob","Cathy"])print(len(my_team))Mogelijk gemaakt door
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.
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!
De functie
len()is een van de eerste hulpmiddelen waarop Python-programmeurs vertrouwen om data te inspecteren. Je bentlen()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:
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:
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:
Hier zie je
5als 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:Dit levert
2op, 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: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:Dit geeft
3terug, 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:Hier geeft
len()3terug, omdat de doos drie items bevat. Net als bij lijsten en strings pastlen()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 eenint-datatype), laat Python dat weten met eenTypeError. Dit komt vaak voor, zeker als je met gemengde datatypes werkt. Bijvoorbeeld:Dit triggert de volgende fout:
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:Dit print elk stuk fruit samen met zijn index, zodat je zowel volgorde als context hebt.
Controleren op lege containers
Vaak wil je weten of een container—zoals een lijst of dictionary—leeg is voordat je verdergaat:
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: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 weetlen()niet wat het moet doen.Onthoud deze regels om tijd te besparen bij het debuggen.
Fouthandling met len()
Omdat
len()eenTypeErrorkan 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: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 eenTeam,BoxofLibrary. Eerder zag je datlen()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 datlen()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:
Ook nu geeft
len()3terug, 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.