Gebruik de functie Enumerate in Python om lussen met tellers te maken

Use Enumerate Function Python Create Loops With Counters



In dit artikel wordt het gebruik uitgelegd van de enumerate-functie die beschikbaar is in de standaardmodulebibliotheek van Python. Met de Enumerate-functie kunt u een index of telling toewijzen aan elementen in elk itereerbaar object. U kunt er dan verdere logica op toepassen, omdat u toegang hebt tot beide waarden en een telling die eraan is toegewezen.

Syntaxis en basisvoorbeeld

Als je een for-lus in andere programmeertalen hebt gebruikt, met name de C-taal en andere talen met een C-stijlsyntaxis, heb je mogelijk een startindex in de lus gespecificeerd. Ter referentie, hier is hoe een for-lus eruit ziet in C en andere talen met een vergelijkbare syntaxis:







voor (intl= 0;l< 10;l++)

{

printf ('%NSN',l);

}

De lusinstructie initialiseert een variabele met de waarde nul, controleert of deze kleiner is dan een drempel en verhoogt deze met één telling na evaluatie van de logica in het lusblok (als aan de stopvoorwaarde is voldaan). Op deze manier kunt u een index gebruiken en deze toewijzen aan objecten waarnaar in uw loop-blok wordt verwezen. Ter vergelijking, hier is hoe een for-lus met hetzelfde resultaat eruit ziet in Python:



voorlin bereik(0, 10):

afdrukken (l)

Met de bereikfunctie in Python kunt u een reeks getallenreeksen specificeren met een standaardstap van 1. U kunt de stapwaarde wijzigen door een derde argument op te geven. Het tweede argument in de bereikfunctie wordt gebruikt om de drempel voor de stopconditie in te stellen. Beide codevoorbeelden produceren de volgende uitvoer:



0

1

2

3

4

5

6

7

8

9

Deze lussen werken prima als u alleen een nummerreeks wilt genereren en deze wilt koppelen aan enige logica in de lusinstructie. Het is echter mogelijk dat u een andere geneste lus moet gebruiken of de opbrengstfunctie op elk willekeurig type moet gebruiken om ze een soort van traceerbare telling toe te wijzen. De enumerate-methode maakt het gemakkelijk om indexen toe te wijzen aan iterables in één instructie, waardoor het niet meer nodig is om meerdere geneste lussen uit te voeren. Bekijk dit codevoorbeeld eens:





nummers= ['nul', 'een', 'twee', 'drie', 'vier', 'vijf']

enumerated_numbers= vermeld(nummers)

voorinhoudsopgave,iteminenumerated_numbers:

afdrukken (inhoudsopgave,item)

De eerste instructie definieert een nieuwe variabele met de naam getallen en wijst er een iterabel (lijsttype) aan toe. De tweede instructie toont het gebruik van de enumerate-functie waarbij u er een iterabel aan toevoegt als een verplicht argument. De derde instructie converteert de variabele enumerated_numbers naar een lijsttype-object. Standaard genereert de enumerate-functie een enumerate type-object en geen itereerbaar type, dus u moet het converteren. Nadat u het hierboven genoemde codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

[(0, 'nul'), (1, 'één'), (2, 'twee'), (3, 'drie'), (4, 'vier'), (5, 'vijf')]

De enumerate-functie wijst een telling toe aan elk element in een itereerbaar type en creëert tupels met gepaarde waarden. Standaard begint de telling vanaf nul.



Nu je een nummer hebt toegewezen aan elk element in een itereerbaar type, kun je er gemakkelijk overheen lopen zonder geneste instructies te schrijven:

nummers= ['nul', 'een', 'twee', 'drie', 'vier', 'vijf']

enumerated_numbers= vermeld(nummers)

voorinhoudsopgave,iteminenumerated_numbers:

afdrukken (inhoudsopgave,item)

Het hierboven gespecificeerde codevoorbeeld zal de volgende uitvoer produceren:

0 nul

1 een

2 twee

3 drie

4 vier

5 vijf

U kunt de code korter maken door de functie enumerate inline te gebruiken, zoals weergegeven in het onderstaande voorbeeld:

nummers= ['nul', 'een', 'twee', 'drie', 'vier', 'vijf']

voorinhoudsopgave,itemin vermeld(nummers):

afdrukken (inhoudsopgave,item)

Opsomming gebruiken met een andere startindex

De enumerate-functie heeft een optioneel argument waarmee u een startindex kunt opgeven. Standaard is het nul, maar u kunt het wijzigen door het startargument te gebruiken:

nummers= ['een', 'twee', 'drie', 'vier', 'vijf']

voorinhoudsopgave,itemin vermeld(nummers,begin=1):

afdrukken (inhoudsopgave,item)

In de tweede instructie wordt het start=1-argument gebruikt om het startpunt te wijzigen. Na het uitvoeren van het hierboven gespecificeerde codevoorbeeld, zou u de volgende uitvoer moeten krijgen:

1 een

2 twee

3 drie

4 vier

5 vijf

Index toewijzen met stappen

In de eerste sectie van dit artikel wordt de syntaxis voor for-lus in C-taal weergegeven, waar u stappen kunt definiëren tussen elke volgende telling of index. De enumerate-functie in Python heeft zo'n argument niet beschikbaar, dus je kunt geen stap tussen tellingen opgeven. U kunt inderdaad uw eigen logica schrijven om stappen in het opgesomde for-lusblok te implementeren. Er is echter een manier om aangepaste stappen te implementeren door minimale code te schrijven. Het volgende voorbeeld toont de implementatie van stappen met behulp van zip- en bereikfuncties:

nummers= ['nul', 'twee', 'vier', 'zes']

voorinhoudsopgave,itemin zip(bereik(0, 7, 2),nummers):

afdrukken (inhoudsopgave,item)

Met de zip-functie kunt u paren maken door elementen met dezelfde index uit twee of meer iterables op te halen. Dus de zip-functie pakt hier een element op uit de iterable die is geretourneerd uit de functie range (0, 7, 2) en een ander element uit de getallenlijst en koppelt ze beide tot een tuple. Het eindresultaat is een identieke implementatie van de enumerate-functie, maar met aangepaste stappen gespecificeerd als een derde argument in de range(0, 7, 2)-functie (2 in dit geval). Na het uitvoeren van het hierboven gespecificeerde codevoorbeeld, zou u de volgende uitvoer moeten krijgen:

0 nul

2 twee

4 vier

6 zes

Conclusie

Met de enumerate-functie in Python kun je beknopte code schrijven door een nummerreeks toe te wijzen aan elementen in een itereerbaar object. Dit is erg handig als u de index van items binnen een itereerbaar type wilt bijhouden. Als u itereerbare typen met aangepaste stappen wilt opsommen, gebruikt u de zip-functie die in het laatste voorbeeld is uitgelegd.