Enumerate() v Pythonu
Často, když se zabýváme iterátory, musíme také udržovat počet iterací. Python usnadňuje programátorům úkol tím, že pro tento úkol poskytuje vestavěnou funkci enumerate(). Metoda enumerate () přidá čítač k iterovatelnému prvku a vrátí jej ve formě výčtového objektu. Tento výčtový objekt lze poté použít přímo pro smyčky nebo převést na seznam n-tic pomocí funkce list().
Syntax: enumerate(iterovatelné, start=0)
Parametry:
- Iterovatelné: jakýkoli objekt, který podporuje iteraci
- Start: hodnota indexu, od které se má čítač spustit, standardně je 0
Vrátit se: Vrátí iterátor s páry indexů a prvků z původní iterovatelné
Příklad
Zde používáme funkci enumerate() se seznamem i řetězcem. Vytváření objektů výčtu pro každý z nich a zobrazení jejich návratových typů. Také ukazuje, jak změnit počáteční index pro výčet při použití na řetězec, což vede k párům index-prvek pro seznam a řetězec. .
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> )))> |
Výstup:
Return type: [(0, 'eat'), (1, 'sleep'), (2, 'repeat')] [(2, 'g'), (3, 'e'), (4, 'e'), (5, 'k')]
Použití Enumerate Object in Loops
Enumerate() se používá se seznamem nazvaným l1. Nejprve vytiskne n-tice párů indexů a prvků. Poté změní počáteční index při jejich společném tisku. Nakonec vytiskne index a prvek samostatně, každý na svém vlastním řádku.
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)> |
Výstup:
(0, 'eat') (1, 'sleep') (2, 'repeat') 100 eat 101 sleep 102 repeat 0 eat 1 sleep 2 repeat
Přístup k dalšímu prvku
V Pythonu slouží funkce enumerate() jako iterátor, který zdědí všechny související funkce a metody iterátoru. Proto můžeme použít funkci next() a metodu __next__() s an vyjmenovat objekt.
Pro přístup k dalšímu prvku v objektu výčtu můžete použít funkci next(). Vezme objekt enumerate jako vstup a vrátí další hodnotu v iteraci.
Python3
fruits> => [> 'apple'> ,> 'banana'> ,> 'cherry'> ]> enum_fruits> => enumerate> (fruits)> next_element> => next> (enum_fruits)> print> (f> 'Next Element: {next_element}'> )> |
Výstup:
Next Element: (0, 'apple')
Můžete znovu zavolat next() a získat následující prvky:
Python3
fruits> => [> 'apple'> ,> 'banana'> ,> 'cherry'> ]> enum_fruits> => enumerate> (fruits)> next_element> => next> (enum_fruits)> print> (f> 'Next Element: {next_element}'> )> |
Výstup:
Next Element: (0, 'apple')
Při každém zavolání next() se vnitřní ukazatel objektu enumerate přesune na další prvek a vrátí odpovídající n-tici indexu a hodnoty.