Używając funkcji enumerate() Pythona, możesz uzyskać numer indeksu (count, order), jak również elementy obiektu iterowalnego, takiego jak lista lub tuple w pętli for.
Ten artykuł wyjaśnia podstawy działania funkcji enumerate().
- Funkcja do uzyskania indeksu w pętli for:
enumerate()
- Normalna pętla for
- Dla pętli używającej funkcji wylicz()
- Rozpocznij indeks funkcji enumerate() od 1 (wartość niezerowa)
- Określenie przyrostu (kroku)
Funkcja enumerate() może być użyta do uzyskania indeksu w pętli for.
Normalna pętla for
l = ['Alice', 'Bob', 'Charlie']
for name in l:
print(name)
# Alice
# Bob
# Charlie
Dla pętli używającej funkcji wylicz()
Jako argument funkcji enumerate() podaj obiekt iterowalny, taki jak lista.
Możesz uzyskać numer indeksu i element w tej kolejności.
for i, name in enumerate(l):
print(i, name)
# 0 Alice
# 1 Bob
# 2 Charlie
Rozpocznij indeks funkcji enumerate() od 1 (wartość niezerowa)
Jak pokazano w powyższym przykładzie, domyślnie indeks funkcji enumerate() zaczyna się od 0.
Jeśli chcesz zacząć od liczby innej niż 0, podaj dowolną liczbę początkową jako drugi argument funkcji enumerate().
Aby zacząć od początku, wykonaj następujące czynności.
for i, name in enumerate(l, 1):
print(i, name)
# 1 Alice
# 2 Bob
# 3 Charlie
Oczywiście, można zacząć od innych liczb.
for i, name in enumerate(l, 42):
print(i, name)
# 42 Alice
# 43 Bob
# 44 Charlie
Przydatne, gdy chcesz utworzyć łańcuch numerowany sekwencyjnie; mądrzej jest podać numer początkowy jako drugi argument funkcji enumerate() niż użyć 'i+1' by zacząć od 1.
for i, name in enumerate(l, 1):
print('{:03}_{}'.format(i, name))
# 001_Alice
# 002_Bob
# 003_Charlie
Więcej informacji na temat funkcji format, która służy do wypełniania liczb zerami, można znaleźć w poniższym artykule.
- Powiązane artykuły:Wyprowadzanie wypełnionych zer, liczb szesnastkowych, itp. za pomocą funkcji format() Pythona
Określenie przyrostu (kroku)
W funkcji enumerate() nie ma argumentu do określenia kroku przyrostowego, ale można to osiągnąć wykonując następujące czynności
step = 3
for i, name in enumerate(l):
print(i * step, name)
# 0 Alice
# 3 Bob
# 6 Charlie