Funkcja enumerate() w Pythonie to wbudowana funkcja, która pozwala iterować po sekwencjach (takich jak listy czy krotki), jednocześnie uzyskając indeksy elementów. Służy do wygodnego dostępu zarówno do pozycji, jak i wartości w pętli for, eliminując potrzebę ręcznego licznika.
Przykład w e-commerce
Rozważmy analizę danych sprzedażowych w e-commerce: mamy listę produktów z ich cenami i chcemy wyświetlić ranking najlepiej sprzedających się towarów z numeracją pozycji.
# Lista produktów z e-sklepu: nazwy i liczba sprzedanych sztuk
produkty = [
("Laptop Dell", 150),
("Smartfon iPhone", 320),
("Słuchawki Sony", 85),
("Tablet Samsung", 210),
("Klawiatura mechaniczna", 95)
]
# Sortujemy produkty malejąco według liczby sprzedanych sztuk
produkty.sort(key=lambda x: x, reverse=True)
print("Ranking najlepiej sprzedających się produktów:")
# Używamy enumerate() do numeracji rankingu (indeks + 1 dla pozycji 1, 2, 3...)
for pozycja, (nazwa, sprzedane) in enumerate(produkty, start=1):
print(f"{pozycja}. {nazwa}: {sprzedane} szt.")
# Wyjaśnienie: enumerate() zwraca krotki (indeks, wartość), start=1 zmienia początek numeracjiWynik:
Ranking najlepiej sprzedających się produktów:
1. Smartfon iPhone: 320 szt.
2. Tablet Samsung: 210 szt.
3. Laptop Dell: 150 szt.
4. Klawiatura mechaniczna: 95 szt.
5. Słuchawki Sony: 85 szt.Zastosowanie
Kiedy używać enumerate()? Ta funkcja jest nieoceniona w scenariuszach wymagających dostępu do indeksów podczas iteracji:
- Analiza danych: numerowanie wierszy w raportach sprzedażowych lub logach transakcji.
- Przetwarzanie list: modyfikacja elementów po indeksie, np. aktualizacja stanów magazynowych.
- Generowanie menu lub rankingów: w aplikacjach e-commerce do wyświetlania list produktów z pozycjami.
- Unikanie błędów: zamiast
i = 0; for item in lista: ... i += 1, co jest podatne na pomyłki.
Wybieraj ją zawsze, gdy potrzebujesz eleganckiego połączenia indeksu i wartości - kod staje się czytelniejszy i krótszy.
Podsumowanie
enumerate() to mała zmiana w kodzie, która znacząco poprawia jego czytelność i bezpieczeństwo w projektach data science czy e-commerce.