Met behulp van Python's enumerate() functie kan je zowel het indexnummer (count, order) als de elementen van een iterabel object zoals een lijst of tuple in een for-lus krijgen.
Dit artikel legt de basis uit van de enumerate() functie.
- Functie om de index in een for-lus te krijgen:
enumerate()
- Normale for-lus
- Voor een lus met de functie opsommen()
- Start de index van de opsomming()-functie op 1 (een waarde die niet nul is)
- Specificeer de toename (stap)
De functie opsomming() kan worden gebruikt om de index in een for-lus te krijgen.
Normale for-lus
l = ['Alice', 'Bob', 'Charlie']
for name in l:
print(name)
# Alice
# Bob
# Charlie
Voor een lus met de functie opsommen()
Geef een iterabel object, zoals een lijst, op als argument van de functie opsomming().
U kunt het indexnummer en het element in die volgorde krijgen.
for i, name in enumerate(l):
print(i, name)
# 0 Alice
# 1 Bob
# 2 Charlie
Start de index van de opsomming()-functie op 1 (een waarde die niet nul is)
Zoals in het voorbeeld hierboven, begint de index van de opsomming() functie standaard bij 0.
Indien je met een ander getal dan 0 wil beginnen, geef dan een willekeurig startgetal op als tweede argument van de opsomming() functie.
Om vanaf nul te beginnen, doe je het volgende.
for i, name in enumerate(l, 1):
print(i, name)
# 1 Alice
# 2 Bob
# 3 Charlie
Je kunt natuurlijk ook met andere getallen beginnen.
for i, name in enumerate(l, 42):
print(i, name)
# 42 Alice
# 43 Bob
# 44 Charlie
Nuttig wanneer je een sequentieel genummerde string wil maken; het is slimmer om het startnummer op te geven als tweede argument van de enumerate() functie dan om 'i+1' te gebruiken om vanaf 1 te beginnen.
for i, name in enumerate(l, 1):
print('{:03}_{}'.format(i, name))
# 001_Alice
# 002_Bob
# 003_Charlie
Zie het volgende artikel voor meer informatie over de format functie, die gebruikt wordt om getallen met nullen te vullen.
- Verwante Artikelen:Uitvoer van ingevulde nullen, hexadecimale getallen, enz. met Python's format() functie
Specificeer de toename (stap)
Er is geen argument om de incrementele stap in de opsomming()-functie te specificeren, maar het kan worden bereikt door het volgende te doen
step = 3
for i, name in enumerate(l):
print(i * step, name)
# 0 Alice
# 3 Bob
# 6 Charlie