Python ondersteunt veel itereerbare objecten: lijsten, tupels en strings zijn er maar een paar. De for-lus van Python is flexibel genoeg om deze objecten gemakkelijk te verwerken. Het bespaart u met name de numerieke index van elke invoer zelf.
Maar soms wil je met een index werken, bijvoorbeeld om items in een collectie te tellen of te filteren. Leer hoe u de functie Python enumerate kunt gebruiken om een reeks te herhalen terwijl u zowel de index als het element bijhoudt.
Itereren Zonder enumerate()
Overweeg de volgende Python-lijst.
my_fruits = ["appels", "peren", "bananen"]
Stel dat u het aantal van elk element in de lijst wilt bijhouden. Je zou kunnen gebruik een for-lus met een bereik() zo functioneren.
tellen = 0
voor fruit in bereik (len (my_fruits)):
print (count, my_fruits[count])
tel += 1
Hoewel dit werkt, heeft het een paar tekortkomingen:
- Je moet de telling buiten de lus bijhouden.
- U moet de telling in elke iteratie verhogen.
- Je moet de lengte van de lus berekenen.
- bereik (len()) werkt alleen met telbare, indexeerbare objecten.
Er bestaat een betere oplossing: de functie enumerate().
Hoe enumerate() werkt in Python
de python opsommen() functie neemt een gegevensverzameling en retourneert een enumerate-object. Het enumerate object bevat een teller als sleutel voor elk item dat het object bevat. De opsommen() functie doet dit door elk item een telling toe te wijzen. Deze telling komt overeen met het aantal iteraties dat de functie heeft voltooid om die waarde te bereiken.
Deze teller maakt het makkelijker om toegang te krijgen tot de items in de collectie of zelfs om de collectie te muteren waar mogelijk.
Met opsommen(), hoeft u de lengte van de lus of het aantal herhalingen niet bij te houden. U kunt ook voorkomen dat u expliciet toegang krijgt tot de waarde met behulp van de index-operator, zoals fruit [tel]. De enumerate-functie verwerkt automatisch al deze functies.
De syntaxis van Python enumerate()
Hieronder vindt u de algemene syntaxis voor de functie enumerate().
opsommen (itereerbaar, start=0)
enumerate() heeft twee argumenten:
- itereerbaar: een gegevensverzameling of reeks die Python kan herhalen. bijv. een lijst of tupel.
- start: de index waarvan de enumerate-functie moet beginnen met tellen.
Hoe enumerate() wordt geïmplementeerd
Om te begrijpen hoe opsommen() werkt, laten we eens kijken hoe het daadwerkelijk wordt geïmplementeerd.
zekeropsommen(volgorde, begin=0):
n = begin
voor elem in reeks:
opbrengst n, elem
n += 1
Deze functie, die u kunt vinden in de Python-documentatie opsommen, neemt een reeks en een startargument dat standaard op 0 staat.
De functie initialiseert vervolgens de variabele n naar de startvariabele. Dit houdt het aantal iteraties bij.
In de for-lus die volgt voor elk element in de reeks,
- opbrengst pauzeert de uitvoering van de lus.
- Het retourneert ook de huidige telling (n) en waarde (elem).
- Wanneer de lus wordt hervat, wordt n verhoogd.
De retourwaarde is een object van sleutel-waardeparen.
Als je de zou bellen opsommen() functie en geef het de lijst met fruit door, dit zou de uitvoerwaarde zijn.
my_fruits = ["appels", "peren", "bananen"]
enumerate_object = enumerate (my_fruits)
print (lijst (enumerate_object))
# output - [(0, 'appels'), (1, 'peren'), (2, 'bananen')]
Opsommen met een andere startindex
In het bovenstaande voorbeeld hebben we de startindex niet gespecificeerd. In onderstaand voorbeeld ziet u hoe u de startindex kunt instellen op een getal naar keuze.
Om om 10 uur te beginnen, doe je het volgende.
enumerate_object = enumerate (my_fruits, 10)
print (lijst (enumerate_object))
# output - [(10, 'appels'), (11, 'peren'), (12, 'bananen')]
Python enumerate() Voorbeelden
Hier zijn enkele voorbeelden die laten zien hoe u kunt gebruiken opsommen() in Python.
Een Python-string opsommen
In dit voorbeeld gebruik je enumerate om de letter op index 5 op te halen:
my_string = "makeuseof"
voor tellen, waarde in opsommen (my_string):
als tellen == 5:
afdrukken (waarde)
# uitgang - s
Een Python-tuple opsommen
Je kan ook gebruiken opsommen() herhalen over een Python-tupel. In dit voorbeeld drukt het programma een kop af in de eerste iteratie, voordat de items worden weergegeven.
my_fruits_tuple = ("appels", "peren", "bananen")
voor index, waarde in opsommen (my_fruits_tuple):
als (index == 0):
print("Fruit:")afdrukken (waarde)
/*
Fruit:
appels
peren
bananen
*/
Een Python-lijst opsommen
In het onderstaande voorbeeld gebruikt u enumerate om alle getallen in de bovenstaande lijst met 10 te verlagen met 2.
mijn_nummer_lijst = [10, 17, 15, 6]
voor index, waarde in opsommen (my_number_list):
als (waarde > 10):
mijn_nummer_lijst[index] -= 2afdrukken (mijn_nummer_lijst)
# uitgang - [10, 15, 13, 6]
Gebruik enumerate om uw iterables te tellen
Python omvat: opsommen() als ingebouwde functie. U kunt het gebruiken om items in een itereerbare verzameling, zoals lijst, tuple of string, te herhalen en te tellen. Het kan u helpen de werkelijke index van elk element bij te houden, maar u kunt ook uw eigen startindex specificeren. Gebruik het als alternatief voor de bereik() functie als u werkt met objecten die niet telbare en indexeerbare objecten zijn.