Python, Brug af funktionen enumerate(): Få fat i elementerne og indeksene i en liste

Forretning

Ved hjælp af Pythons funktion enumerate() kan du hente indeksnummeret (antal, rækkefølge) samt elementerne i et iterbart objekt, f.eks. en liste eller tupel, i en for-loop.

Denne artikel forklarer det grundlæggende i funktionen enumerate().

  • Funktion til at få indekset i en for-løkke: enumerate()
    • Normal for loop
    • For loop ved hjælp af funktionen enumerate()
  • Start indekset for enumerate() funktionen ved 1 (en værdi, der ikke er nul)
  • Angiv trin (trin)

Funktionen enumerate() kan bruges til at hente indekset i en for-løkke.

Normal for loop

l = ['Alice', 'Bob', 'Charlie']

for name in l:
    print(name)
# Alice
# Bob
# Charlie

For loop ved hjælp af funktionen enumerate()

Angiv et iterbart objekt, f.eks. en liste, som argument for funktionen enumerate().

Du kan få indeksnummeret og elementet i den rækkefølge.

for i, name in enumerate(l):
    print(i, name)
# 0 Alice
# 1 Bob
# 2 Charlie

Start indekset for enumerate() funktionen ved 1 (en værdi, der ikke er nul)

Som vist i eksemplet ovenfor starter indekset for funktionen enumerate() som standard fra 0.

Hvis du vil starte med et andet tal end 0, skal du angive et vilkårligt starttal som det andet argument i funktionen enumerate().

Hvis du vil starte helt forfra, skal du gøre følgende.

for i, name in enumerate(l, 1):
    print(i, name)
# 1 Alice
# 2 Bob
# 3 Charlie

Du kan selvfølgelig også starte med andre tal.

for i, name in enumerate(l, 42):
    print(i, name)
# 42 Alice
# 43 Bob
# 44 Charlie

Nyttigt, når du vil oprette en streng med sekventielt nummer; det er smartere at angive startnummeret som andet argument i enumerate() funktionen end at bruge 'i+1' for at starte fra 1.

for i, name in enumerate(l, 1):
    print('{:03}_{}'.format(i, name))
# 001_Alice
# 002_Bob
# 003_Charlie

Se følgende artikel for at få flere oplysninger om formatfunktionen, som bruges til at udfylde tal med nuller.

Angiv trin (trin)

Der er ikke noget argument til at angive det inkrementelle trin i funktionen enumerate(), men det kan opnås ved at gøre følgende

step = 3
for i, name in enumerate(l):
    print(i * step, name)
# 0 Alice
# 3 Bob
# 6 Charlie