Als we met iteratoren te maken hebben, moeten we vaak ook het aantal iteraties bijhouden. Python verlicht de taak van programmeurs door voor deze taak een ingebouwde functie enumerate() te bieden. De methode enumerate () voegt een teller toe aan een iterabele en retourneert deze in de vorm van een opsommingsobject. Dit opgesomde object kan vervolgens rechtstreeks voor lussen worden gebruikt of worden geconverteerd naar een lijst met tupels met behulp van de functie list().
Syntaxis: opsommen(itereerbaar, start=0)
Parameters:
- Itereerbaar: elk object dat iteratie ondersteunt
- Begin: de indexwaarde vanaf waar de teller moet starten; standaard is deze 0
Opbrengst: Retourneert een iterator met index- en elementparen uit de oorspronkelijke iterabele
Voorbeeld
Hier gebruiken we de functie enumerate() met zowel een lijst als een string. Het maken van opsommingsobjecten voor elk en het weergeven van hun retourtypen. Het laat ook zien hoe je de startindex voor opsomming kunt wijzigen wanneer deze op een string wordt toegepast, wat resulteert in index-elementparen voor de lijst en de string .
Python3
statische functie in Java
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>)))> |
>
>
Uitgang:
Return type: [(0, 'eat'), (1, 'sleep'), (2, 'repeat')] [(2, 'g'), (3, 'e'), (4, 'e'), (5, 'k')]>
Object opsommen in lussen gebruiken
Enumerate() wordt gebruikt met een lijst met de naam l1. Het drukt eerst tupels van index- en elementparen af. Vervolgens verandert het de startindex terwijl ze samen worden afgedrukt. Ten slotte worden de index en het element afzonderlijk afgedrukt, elk op een eigen regel.
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)> |
>
>
Uitgang:
(0, 'eat') (1, 'sleep') (2, 'repeat') 100 eat 101 sleep 102 repeat 0 eat 1 sleep 2 repeat>
Toegang tot het volgende element
In Python fungeert de functie enumerate() als een iterator, waarbij alle bijbehorende iteratorfuncties en -methoden worden overgenomen. Daarom kunnen we de functie next() en de methode __next__() gebruiken met een opsommen voorwerp.
Om toegang te krijgen tot het volgende element in een enumerate-object, kunt u de functie next() gebruiken. Het neemt het enumerate-object als invoer en retourneert de volgende waarde in de iteratie.
Python3
voeten versus voet
fruits>=> [>'apple'>,>'banana'>,>'cherry'>]> enum_fruits>=> enumerate>(fruits)> next_element>=> next>(enum_fruits)> print>(f>'Next Element: {next_element}'>)> |
>
>
Uitgang:
Next Element: (0, 'apple')>
U kunt next() opnieuw aanroepen om volgende elementen op te halen:
Python3
fruits>=> [>'apple'>,>'banana'>,>'cherry'>]> enum_fruits>=> enumerate>(fruits)> next_element>=> next>(enum_fruits)> print>(f>'Next Element: {next_element}'>)> |
wat is mijn monitorformaat
>
>
Uitgang:
Next Element: (0, 'apple')>
Elke keer dat next() wordt aangeroepen, gaat de interne pointer van het enumerate-object naar het volgende element, waarbij het overeenkomstige tupel van index en waarde wordt geretourneerd.