Python

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

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

In dit artikel wordt het gebruik uitgelegd van de functie "opsommen" die beschikbaar is in de standaardmodulebibliotheek van Python. Met de enumerate-functie kunt u een "index" of "count" toewijzen aan elementen in een willekeurig 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 u een "for"-lus in andere programmeertalen hebt gebruikt, met name de "C"-taal en andere talen met de syntaxis van de "C"-stijl, heeft u mogelijk een startindex in de lus opgegeven. Ter referentie, hier is hoe een "for"-lus eruit ziet in "C" en andere talen met een vergelijkbare syntaxis:

voor (int i = 0; i < 10; i++)

printf("%d\n", ik);

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:

voor i binnen bereik (0, 10):
afdrukken (ik)

Met de functie "bereik" 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 functie "bereik" wordt gebruikt om de drempel voor de stopvoorwaarde in te stellen. Beide codevoorbeelden produceren de volgende uitvoer:

0
1
2
3
4
5
6
7
8
9

Deze lussen werken prima als je gewoon een nummerreeks wilt genereren en ze wilt koppelen aan enige logica in de lusinstructie. Het is echter mogelijk dat u een andere geneste lus moet gebruiken of de "opbrengst" -functie op elk itereerbaar 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. Kijk eens naar dit codevoorbeeld:

getallen = ["nul", "één", "twee", "drie", "vier", "vijf"]
enumerated_numbers = enumerate(nummers)
voor index, item in enumerated_numbers:
print (index, item)

De eerste instructie definieert een nieuwe variabele genaamd "getallen" en wijst er een iterabel (lijsttype) aan toe. De tweede instructie toont het gebruik van de functie "enumerate" waarbij u er een iterabel aan geeft als een verplicht argument. De derde instructie converteert de variabele "enumerated_numbers" naar een object van het lijsttype. Standaard genereert de functie "enumerate" een object van het type "enumerate" 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 functie "opsommen" 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:

getallen = ["nul", "één", "twee", "drie", "vier", "vijf"]
enumerated_numbers = enumerate(nummers)
voor index, item in enumerated_numbers:
print (index, 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 "opsommen" inline te gebruiken, zoals weergegeven in het onderstaande voorbeeld:

getallen = ["nul", "één", "twee", "drie", "vier", "vijf"]
voor index, item in enumerate(getallen):
print (index, item)

Opsomming gebruiken met een andere startindex

De functie "opsommen" heeft een optioneel argument nodig waar u een startindex kunt opgeven. Standaard is het nul, maar u kunt het wijzigen door het argument "start" te gebruiken:

getallen = ["een", "twee", "drie", "vier", "vijf"]
voor index, item in enumerate(numbers, start=1):
print (index, item)

In de tweede instructie wordt het argument "start=1" 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 de "for"-lus in de "C"-taal getoond, waar u stappen kunt definiëren tussen elke volgende telling of index. De functie "opsommen" in Python heeft geen dergelijk argument beschikbaar, dus u 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 de functies "zip" en "bereik":

getallen = ["nul", "twee", "vier", "zes"]
voor index, item in zip (bereik (0, 7, 2), getallen):
print (index, item)

Met de "zip" -functie kunt u paren maken door elementen met dezelfde index op te halen uit twee of meer iterables. 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 lijst met "nummers" en koppelt ze beide tot een tuple. Het eindresultaat is een identieke implementatie als de functie "opsommen", maar met aangepaste stappen gespecificeerd als een derde argument in de functie "bereik (0, 7, 2)" (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 functie "opsommen" in Python kunt u 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 wilt "opsommen" met aangepaste stappen, gebruikt u de "zip" -functie die in het laatste voorbeeld is uitgelegd.

Sid Meier's Civilization VI downloaden en spelen op Linux and
Inleiding tot het spel Civilization 6 is een moderne versie van het klassieke concept dat werd geïntroduceerd in de serie Age of Empires-games. Het id...
Doom installeren en spelen op Linux
Inleiding tot Doom De Doom-serie is ontstaan ​​in de jaren 90 na de release van de originele Doom. Het was meteen een hit en vanaf die tijd heeft de g...
Vulkan voor Linux-gebruikers
Met elke nieuwe generatie grafische kaarten zien we game-ontwikkelaars de grenzen van grafische betrouwbaarheid verleggen en een stap dichter bij foto...