Med hjälp av Pythons funktion enumerate() kan du få fram indexnumret (antal, ordning) och elementen i ett iterbart objekt, t.ex. en lista eller tupel, i en for-slinga.
I den här artikeln förklaras grunderna för funktionen enumerate().
- Funktion för att hämta index i en for-slinga:
enumerate()
- Normal för slinga
- För en slinga som använder funktionen enumerate()
- Börja indexet för funktionen enumerate() vid 1 (ett värde som inte är noll).
- Ange ökningen (steg)
Funktionen enumerate() kan användas för att få fram index i en for-slinga.
Normal för slinga
l = ['Alice', 'Bob', 'Charlie']
for name in l:
print(name)
# Alice
# Bob
# Charlie
För en slinga som använder funktionen enumerate()
Ange ett iterbart objekt, t.ex. en lista, som argument för funktionen enumerate().
Du kan få fram indexnumret och elementet i den ordningen.
for i, name in enumerate(l):
print(i, name)
# 0 Alice
# 1 Bob
# 2 Charlie
Börja indexet för funktionen enumerate() vid 1 (ett värde som inte är noll).
Som visas i exemplet ovan börjar indexet för funktionen enumerate() som standard från 0.
Om du vill börja med ett annat nummer än 0 anger du ett godtyckligt startnummer som det andra argumentet i funktionen enumerate().
Om du vill börja om från början gör du följande.
for i, name in enumerate(l, 1):
print(i, name)
# 1 Alice
# 2 Bob
# 3 Charlie
Du kan naturligtvis börja med andra siffror.
for i, name in enumerate(l, 42):
print(i, name)
# 42 Alice
# 43 Bob
# 44 Charlie
Användbart när du vill skapa en sträng med löpande nummer; det är smartare att ange startnumret som det andra argumentet i funktionen enumerate() än att använda ”i+1” för att börja från 1.
for i, name in enumerate(l, 1):
print('{:03}_{}'.format(i, name))
# 001_Alice
# 002_Bob
# 003_Charlie
I följande artikel finns mer information om formatfunktionen, som används för att fylla ut siffror med nollor.
- Relaterade artiklar:Utskrift av fyllda nollor, hexadecimala tal etc. med Pythons funktion format()
Ange ökningen (steg)
Det finns inget argument för att ange det inkrementella steget i funktionen enumerate(), men det kan uppnås genom att göra följande
step = 3
for i, name in enumerate(l):
print(i * step, name)
# 0 Alice
# 3 Bob
# 6 Charlie