Enumerate() w Pythonie

Często, gdy mamy do czynienia z iteratorami, musimy również rejestrować liczbę iteracji. Python ułatwia zadanie programistom, udostępniając do tego zadania wbudowaną funkcję enumerate(). Metoda enumerate () dodaje licznik do obiektu iterowalnego i zwraca go w postaci obiektu wyliczającego. Ten wyliczony obiekt można następnie wykorzystać bezpośrednio w pętlach lub przekonwertować na listę krotek za pomocą funkcji list().

Składnia: wyliczyć(iterowalne, start=0)

Parametry:

  • Iterowalne: dowolny obiekt obsługujący iterację
  • Początek: wartość indeksu, od której licznik ma zostać uruchomiony, domyślnie jest to 0

Powrót: Zwraca iterator z parami indeksów i elementów z oryginalnej iteracji

Przykład

Tutaj używamy funkcji enumerate() zarówno z listą, jak i ciągiem znaków. Tworzenie obiektów wyliczeniowych dla każdego z nich i wyświetlanie ich typów zwracanych. Pokazuje także, jak zmienić początkowy indeks wyliczenia po zastosowaniu do ciągu, w wyniku czego powstają pary elementów indeksu dla listy i ciągu .

Python3




l1> => [> 'eat'> ,> 'sleep'> ,> 'repeat'> ]> s1> => 'geek'> # creating enumerate objects> obj1> => enumerate> (l1)> obj2> => enumerate> (s1)> print> (> 'Return type:'> ,> type> (obj1))> print> (> list> (> enumerate> (l1)))> # changing start index to 2 from 0> print> (> list> (> enumerate> (s1,> 2> )))>

Wyjście:

Return type: [(0, 'eat'), (1, 'sleep'), (2, 'repeat')] [(2, 'g'), (3, 'e'), (4, 'e'), (5, 'k')] 

Używanie wyliczania obiektów w pętlach

Funkcja Enumerate() jest używana z listą o nazwie l1. Najpierw wypisuje krotki par indeksów i elementów. Następnie zmienia indeks początkowy podczas drukowania ich razem. Na koniec wypisuje osobno indeks i element, każdy w osobnej linii.

Python3




l1> => [> 'eat'> ,> 'sleep'> ,> 'repeat'> ]> # printing the tuples in object directly> for> ele> in> enumerate> (l1):> > print> (ele)> # changing index and printing separately> for> count, ele> in> enumerate> (l1,> 100> ):> > print> (count, ele)> # getting desired output from tuple> for> count, ele> in> enumerate> (l1):> > print> (count)> > print> (ele)>

Wyjście:

(0, 'eat') (1, 'sleep') (2, 'repeat') 100 eat 101 sleep 102 repeat 0 eat 1 sleep 2 repeat 

Dostęp do następnego elementu

W Pythonie funkcja enumerate() pełni rolę iteratora, dziedzicząc wszystkie powiązane funkcje i metody iteratora. Dlatego możemy użyć funkcji next() i metody __next__() z wyliczać obiekt.

Aby uzyskać dostęp do następnego elementu obiektu wyliczeniowego, możesz użyć funkcji next(). Przyjmuje obiekt enumerate jako dane wejściowe i zwraca następną wartość w iteracji.

Python3




fruits> => [> 'apple'> ,> 'banana'> ,> 'cherry'> ]> enum_fruits> => enumerate> (fruits)> next_element> => next> (enum_fruits)> print> (f> 'Next Element: {next_element}'> )>

Wyjście:

Next Element: (0, 'apple') 

Możesz ponownie wywołać funkcję next() w celu pobrania kolejnych elementów:

Python3




fruits> => [> 'apple'> ,> 'banana'> ,> 'cherry'> ]> enum_fruits> => enumerate> (fruits)> next_element> => next> (enum_fruits)> print> (f> 'Next Element: {next_element}'> )>

Wyjście:

Next Element: (0, 'apple') 

Za każdym razem, gdy wywoływana jest metoda next(), wewnętrzny wskaźnik obiektu wyliczeniowego przesuwa się do następnego elementu, zwracając odpowiednią krotkę indeksu i wartości.