Python obsługuje wiele iterowalnych obiektów: listy, krotki i ciągi znaków to tylko kilka. Pętla for Pythona jest wystarczająco elastyczna, aby z łatwością obsługiwać te obiekty. W szczególności pozwala to uniknąć samodzielnego zajmowania się indeksem numerycznym każdego wpisu.

Ale czasami będziesz chciał pracować z indeksem, na przykład policzyć lub filtrować elementy w kolekcji. Dowiedz się, jak używać funkcji enumerate języka Python do iteracji po sekwencji przy jednoczesnym śledzeniu zarówno indeksu, jak i elementu.

Iteracja bez enumerate()

Rozważ poniższą listę Pythona.

moje_owoce = ["jabłka", "gruszki", "banany"]

Załóżmy, że chcesz śledzić liczbę każdego elementu na liście. Mógłbyś użyj pętli for z zasięg() funkcjonować w ten sposób.

liczba = 0

dla owoc w zakres (len (moje_owoce)):
drukuj (liczba, moje_owoce[liczba])
liczba += 1

Chociaż to działa, ma kilka wad:

  • Musisz śledzić liczbę poza pętlą.
  • Musisz zwiększyć liczbę w każdej iteracji.
  • Musisz obliczyć długość pętli.
  • zakres (len()) działa tylko z policzalnymi, indeksowanymi obiektami.
instagram viewer

Istnieje lepsze rozwiązanie: funkcja enumerate().

Jak enumerate() działa w Pythonie

Python wyliczać() funkcja pobiera zbiór danych i zwraca obiekt enumerate. Obiekt enumerate zawiera licznik jako klucz dla każdego elementu, który zawiera obiekt. The wyliczać() funkcja robi to, przypisując każdemu elementowi liczbę. Ta liczba odpowiada liczbie iteracji, które funkcja wykonała, aby osiągnąć tę wartość.

Ten licznik ułatwia dostęp do przedmiotów w kolekcji, a nawet mutowanie kolekcji tam, gdzie to możliwe.

Z wyliczać(), nie musisz śledzić długości pętli ani liczby iteracji. Możesz także uniknąć jawnego dostępu do wartości za pomocą operatora indeksu, na przykład owoce[liczba]. Funkcja enumerate automatycznie obsługuje wszystkie te funkcje.

Składnia Pythona enumerate()

Poniżej znajduje się ogólna składnia funkcji enumerate().

wyliczyć (iterowalny, start=0)

enumerate() przyjmuje dwa argumenty:

  1. iterowalny: zbiór danych lub sekwencja, po której Python może iterować. Np. lista lub krotka.
  2. start: indeks, od którego funkcja enumerate powinna zacząć liczyć.

Jak zaimplementowano enumerate()?

Aby zrozumieć jak wyliczać() działa, zobaczmy, jak jest faktycznie zaimplementowany.

definitywniewyliczać(kolejność, początek=0):
n = początek

dla elem w sekwencja:
dawać n, elem
n += 1

Ta funkcja, którą znajdziesz w Python wylicza dokumentację, pobiera sekwencję i argument początkowy, który domyślnie ma wartość 0.

Funkcja następnie inicjalizuje zmienną n do zmiennej początkowej. To śledzi liczbę iteracji.

W pętli for, która następuje dla każdego elementu w sekwencji,

  • dawać wstrzymuje wykonywanie pętli.
  • Zwraca również bieżącą liczbę (n) i wartość (elem).
  • Kiedy pętla się wznawia, zwiększa się o n.

Zwracana wartość jest obiektem par klucz-wartość.

Jeśli miałbyś zadzwonić do wyliczać() funkcji i przekaż jej listę owoców, będzie to wartość wyjściowa.

moje_owoce = ["jabłka", "gruszki", "banany"]
enumerate_object = enumerate (moje_owoce)
drukuj (lista (enumerate_object))

# wyjście - [(0, 'jabłka'), (1, 'gruszki'), (2, 'banany')]

Wylicz z innym indeksem początkowym

W powyższym przykładzie nie określiliśmy indeksu początkowego. Poniższy przykład pokazuje, jak ustawić indeks początkowy na wybraną liczbę.

Aby zacząć od 10, wykonaj następujące czynności.

enumerate_object = enumerate (moje_owoce, 10)
drukuj (lista (enumerate_object))

# wyjście - [(10, 'jabłka'), (11, 'gruszki'), (12, 'banany')]

Python enumerate() Przykłady

Oto kilka przykładów pokazujących, jak możesz użyć wyliczać() w Pythonie.

Wylicz ciąg Pythona

W tym przykładzie użyjesz enumerate, aby pobrać literę o indeksie 5:

my_string = "wykorzystywanie"

dla liczba, wartość w wyliczyć (mój_ciąg):
jeśli liczba == 5:
wydrukować (wartość)

# wyjście - s

Wylicz krotkę Pythona

Możesz także użyć wyliczać() iterować przez a Krotka Pythona. W tym przykładzie program drukuje nagłówek w pierwszej iteracji, przed wyświetleniem elementów.

my_fruits_tuple = ("jabłka", "gruszki", "banany")

dla indeks, wartość w wyliczyć (moje_owoce_krotka):
jeśli (indeks == 0):
print("Owoce:")

drukuj (wartość)

/*
Owoce:
jabłka
gruszki
banany
*/

Wylicz listę Pythona

W poniższym przykładzie używasz enumerate do zmniejszenia wszystkich liczb na liście powyżej 10 o 2.

moja_lista_numerów = [10, 17, 15, 6]

dla indeks, wartość w wyliczyć (moja_lista_numerów):
jeśli (wartość > 10):
moja_lista_numerów[indeks] -= 2

drukuj (moja_lista_numerów)

# wyjście - [10, 15, 13, 6]

Użyj enumerate, aby policzyć swoje iterable

Python zawiera wyliczać() jako wbudowana funkcja. Możesz go użyć do iteracji i zliczania elementów w iterowalnej kolekcji, takiej jak lista, krotka lub ciąg. Może pomóc w śledzeniu prawdziwego indeksu każdego elementu, ale możesz także określić własny indeks początkowy. Użyj go jako alternatywy dla zasięg(), jeśli pracujesz z obiektami, które nie są policzalne i indeksowalne.