Jak używać wyliczenia w Pythonie (pętla z indeksami)

Dowiedz się, jak używać funkcji enumerate() w Pythonie. Uzyskaj zarówno indeks, jak i wartość, przeglądając listy z czystymi przykładami.

Wypróbuj to rozwiązanie w Edytorze

Przegląd

Podczas iteracji po liście, krotce lub ciągu znaków często konieczne będzie śledzenie bieżącego indeksu każdego elementu obok samego elementu. Typowym wzorcem dla początkujących jest użycie oddzielnej zmiennej licznika, która jest zwiększana ręcznie lub użycie `range(len(my_list))` do iteracji po indeksach. Jednak Python zapewnia znacznie bardziej eleganckie, Pythoniczne i wbudowane rozwiązanie: funkcję `enumerate()`.

Funkcja `enumerate()` przyjmuje dowolny argument iterowalny i zwraca obiekt wyliczeniowy, co daje w wyniku pary krotek wartości indeksu. Używając rozpakowywania krotek w pętli „for”, możesz jednocześnie wyodrębnić indeks i element. Eliminuje to całkowicie potrzebę ręcznego stosowania zmiennych licznikowych i nawiasów indeksujących, dzięki czemu kod jest znacznie czystszy i mniej podatny na błędy pojedyncze.

Domyślnie `enumerate()` rozpoczyna zliczanie indeksów od `0`. Można jednak przekazać niestandardowy indeks początkowy, używając opcjonalnego argumentu słowa kluczowego „start” (np. „enumerate(items, start=1)”). Jest to niezwykle przydatne podczas wyświetlania numerów list użytkownikom, ponieważ ludzie zazwyczaj oczekują, że listy zaczną liczyć od 1 zamiast od 0.

Dane wyjściowe kodu i wykonania

Ten skrypt demonstruje iterację po listach za pomocą enumerate w celu uzyskania par indeks-element, zaczynając od 0 i 1.

use_enumerate.py
Spróbuj w Edytorze
fruits = ["apple", "banana", "cherry"]

# 1. Standard enumeration (starts at 0)
print("--- Standard Enumeration ---")
for index, fruit in enumerate(fruits):
    print(f"Index {index}: {fruit}")

# 2. Enumeration starting at a custom index (e.g., 1)
print("\n--- Starting at 1 ---")
for num, fruit in enumerate(fruits, start=1):
    print(f"Item #{num}: {fruit}")
Wyjście terminala
--- Standard Enumeration ---
Index 0: apple
Index 1: banana
Index 2: cherry

--- Starting at 1 ---
Item #1: apple
Item #2: banana
Item #3: cherry

Wdrażanie krok po kroku

  • Przekaż swoją listę (lub dowolną iterowalną) do wbudowanej funkcji enumerate().
  • Rozpakuj zwrócone krotki w pętli for, używając składni dla indeksu, wartości w enumerate(list).
  • Podaj parametr start (np. start=1), aby zmodyfikować początkową wartość licznika indeksu.

Często zadawane pytania

Czy enumerate() modyfikuje oryginalną listę?

Nie, enumerate() zwraca obiekt leniwego iteratora i pozostawia oryginalną listę całkowicie niezmodyfikowaną.

Czy mogę używać enumerate() ze słownikiem?

Tak, ale bezpośrednia iteracja słownika da jego klucze. Aby iterować wartość indeksu-klucza, użyj: for i, (k, v) w enumerate(my_dict.items()):.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.