In diesem Lernprogramm lernen Sie, wie Sie die Funktion enumerate() in Python verwenden.
Die enumerate()-Funktion in Python bietet eine prägnante Syntax für den Zugriff auf die Elemente in einer Iterable zusammen mit ihren Indizes.
Wir beginnen mit einem Überblick über den Zugriff auf Elemente und Indizes mit Hilfe einer einfachen Schleife und lernen dann die Syntax der enumerate() -Funktion von Python kennen. Dabei werden wir auch Beispiele kodieren.
Lassen Sie uns beginnen.
Wie man mit der for-Schleife in Python iteriert
Jedes Python-Objekt, über das Sie iterieren und auf die einzelnen Elemente einzeln zugreifen können, wird als iterierbar bezeichnet. Daher sind Listen, Tupel, Wörterbücher und Strings in Python allesamt Iterables.

Nehmen wir ein Beispiel für eine Einkaufsliste, die in der unten stehenden Codezelle definiert ist.
shopping_list = ["Obst", "Kekse", "Müsli", "Proteinriegel", "Haftnotizen"]
In Python können Sie die for-Schleife
verwenden, um eine beliebige Iterable zu durchlaufen. Die Syntax dafür lautet wie folgt:
for item in <iterable>:
# etwas mit item tun
# item: Schleifenvariable
# <iterable>: jede beliebige Python-Iterable: Liste, Tupel, Wörterbuch, String und so weiter.
Lassen Sie uns nun mit dieser Syntax eine Schleife durch shopping_list
ziehen und auf die einzelnen Elemente zugreifen.
for item in shopping_list:
print(item)
# Ausgabe
Obst
Kekse
Müsli
Proteinriegel
Post-it notes
Mit diesem Konstrukt können Sie direkt auf die Artikel zugreifen. Manchmal müssen Sie jedoch nicht nur auf die Artikel selbst, sondern auch auf den Index der Artikel zugreifen.
Sie können eine Indexvariable
verwenden, die Sie innerhalb des Schleifenkörpers einkrementieren können, wie unten gezeigt:
index = 0
for item in shopping_list:
print(f "index:{index}, {item}")
index = 1
# Ausgabe
index:0, Obst
index:1, Kekse
index:2, Müsli
index:3, Proteinriegel
index:4, Post-it Notizen
Dies ist jedoch nicht die effizienteste Methode. Wenn Sie nicht daran denken, den Index zu erhöhen, wird Ihr Code nicht wie erwartet funktionieren.
index = 0
for item in shopping_list:
print(f "index:{index}, {item}")
# keine Aktualisierung des Index innerhalb des Schleifenkörpers
# index wird nie aktualisiert und ist immer 0
# Ausgabe
index:0, Früchte
index:0, Kekse
index:0, Müsli
index:0, Proteinriegel
index:0, Haftnotizen
Ein weiteres gängiges Muster für die Verwendung der for-Schleife
ist die Verbindung mit der Funktion range()
. Wir werden im nächsten Abschnitt mehr darüber erfahren.
Wie Sie die Funktion range() für den Zugriff auf den Index verwenden
Die in Python integrierte Funktion len() gibt die Länge eines beliebigen Python-Objekts zurück. Sie können auch die Funktion len()
mit shopping_list
als Argument aufrufen, um die Länge von shopping_list
(in diesem Fall 5) zu erhalten.
len(shopping_list)
# Ausgabe: 5
Die Funktion range()
gibt ein Range-Objekt zurück, das Sie dann in einer Schleife verwenden können. Wenn Sie eine Schleife durch range(stop)
ziehen, erhalten Sie die Indizes 0, 1, 2,..., stop-1.
Wenn Sie stop = len(list)
setzen, erhalten Sie die Liste der gültigen Indizes. Mit der Funktion range()
können Sie auch sowohl auf den Index als auch auf das entsprechende Element zugreifen, wie unten gezeigt.
for index in range(len(einkaufsliste)):
print(f "index:{index}, item: {einkaufsliste[index]}")
# Ausgabe
index:0, item: Obst
index:1, item: Kekse
index:2, item: Müsli
index:3, item: Proteinriegel
index:4, item: Post-it Notizen
Dies ist jedoch nicht die empfohlene Python-Methode, um gleichzeitig auf Indizes und Einträge zuzugreifen.
Syntax der Python-Funktion enumerate()
Mit der Python-Funktion enumerate() können Sie auf die Elemente zusammen mit ihren Indizes zugreifen, indem Sie die folgende allgemeine Syntax verwenden:
enumerate(<aufzählbar>, start = 0)
In der obigen Syntax:
<iterable>
ist ein erforderlich Parameter und kann eine beliebige Python-Iterable sein, z.B. eine Liste oder ein Tupel.- start ist ein optionaler Parameter, der den Index bestimmt, bei dem die Zählung beginnt. Wenn Sie den Wert von start nicht angeben, wird er standardmäßig auf Null gesetzt.
Sie können nun die Funktion enumerate()
mit shopping_list
aufrufen und sie gibt ein enumerate-Objekt zurück, wie in der untenstehenden Codezelle gezeigt.
enumerate(shopping_list)
<aufzählen bei 0x7f91b4240410>
Sie können keine Schleife durch das enumerate-Objekt
ziehen. Wandeln wir auch das enumerate-Objekt
in einer Python-Liste um.
list(enumerate(shopping_list))
# Ausgabe
[(0, 'Obst'),
(1, 'Kekse'),
(2, 'Müsli'),
(3, 'Proteinriegel'),
(4, 'Post-it-Notizen')]
Eine andere Methode, um auf die Elemente des enumerate-Objekts
zuzugreifen, ist der Aufruf der Funktion next() Mit dem enumerate-Objekt
als Argument. In Python gibt es die Funktion next()
das nächste Element aus einem Iterator zurück.
Intern funktioniert die Funktion next()
indem sie die Methode __next__
des Iterator-Objekts aufruft, um die aufeinanderfolgenden Elemente abzurufen.
Weisen wir das enumerate-Objekt der Variablen shopping_list_enum
zu.
shopping_list_enum = enumerate(shopping_list)
Wenn Sie next()
zum ersten Mal mit shopping_list_enum
aufrufen, erhalten Sie den Index Null und das Element bei Index 0: das Tupel (0, 'fruits')
.
Wenn Sie die Funktion next()
weiter aufrufen, erhalten Sie die aufeinanderfolgenden Einträge mit ihren Indizes, wie unten beschrieben.
next(einkaufsliste_enum)
# (0, 'Früchte')
next(einkaufsliste_enum)
# (1, 'Kekse')
next(einkaufsliste_enum)
# (2, 'Müsli')
next(einkaufsliste_enum)
# (3, 'Proteinriegel')
next(einkaufsliste_enum)
# (4, 'Haftnotizen')
Was passiert, wenn Sie die Funktion next()
aufrufen, nachdem Sie auf alle Elemente zugegriffen haben und das Ende der Liste erreicht haben? Sie erhalten einen StopIteration-Fehler
.
next(shopping_list_enum)
# ---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-16-4220f68f6c7e> in <module>()
---->
1 next(shopping_list_enum)
StopIteration:
Die Funktion enumerate()
gibt die aufeinanderfolgenden Indizes und Elemente nur bei Bedarf zurück und wird nicht im Voraus berechnet. Unter Python-Projekte, bei denen Sie auf Speichereffizienz achten müssen, können Sie die Funktion enumerate()
verwenden, wenn Sie eine Schleife durch große Iterablen ziehen müssen.
Beispiele für die Python enumerate() Funktion
Nachdem wir nun die Syntax für die Verwendung der Funktion aufgezählt haben ()
kennengelernt haben, lassen Sie uns die for-Schleife, die wir zuvor hatten, ändern.
Aus dem vorherigen Abschnitt wissen wir, dass die Schleife durch das enumerate-Objekt ein Tupel mit dem Index und dem Element zurückgibt. Wir können dieses Tupel in zwei Variablen entpacken: index
und item
.
for index, item in enumerate(einkaufsliste):
print(f "index:{index}, item:{item}")
# Ausgabe
index:0, item:Obst
index:1, item:Kekse
index:2, item:Müsli
index:3, item:Proteinriegel
index:4, item:Haftnotizen
Als nächstes sehen wir uns an, wie Sie einen benutzerdefinierten Startwert angeben können.
Wie man enumerate() mit einem benutzerdefinierten Startwert ausführt
Python folgt der Null-Indexierung, daher ist der Startwert
standardmäßig 0. Wenn Sie jedoch die Indizes in menschenlesbarer Form benötigen - beginnend bei 1 oder einem anderen Index Ihrer Wahl - können Sie einen benutzerdefinierten Startwert
angeben.
Wenn Sie im Beispiel shopping_list
mit der Zählung bei 1 beginnen möchten, setzen Sie start = 1
.
for index, item in enumerate(einkaufsliste,1):
print(f "index:{index}, item:{item}")
# Ausgabe
index:1, item:Obst
index:2, item:Kekse
index:3, item:Müsli
index:4, item:Proteinriegel
index:5, item:Haftnotizen
Wenn Sie den benutzerdefinierten Startwert angeben, sollten Sie jedoch darauf achten, dass Sie ihn als zweites Positionsargument angeben.
Wenn Sie die Reihenfolge der Iterablen und des Startwerts versehentlich vertauschen, tritt ein Fehler auf, wie in der folgenden Codezelle erläutert.
for index, item in enumerate(1,shopping_list):
print(f "index:{index}, item:{item}")
# Ausgabe
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-5dbf7e2749aa> in <module>()
---->
1 for index, item in enumerate(1,shopping_list):
2 print(f "index:{index}, item:{item}")
TypeError: 'list' Objekt kann nicht als Ganzzahl interpretiert werden
Um solche Fehler zu vermeiden, können Sie start
als Schlüsselwortargument angeben, wie unten gezeigt.
for index, item in enumerate(einkaufsliste, start = 1):
print(f "index:{index}, item:{item}")
# Ausgabe
index:1, item:Obst
index:2, item:Kekse
index:3, item:Müsli
index:4, item:Proteinriegel
index:5, item:Post-it Notizen
Bis jetzt haben Sie gelernt, wie Sie die Funktion enumerate()
mit Python-Listen verwenden können. Sie können die Funktion enumerate auch verwenden, um eine Schleife durch Python Zeichenketten, Wörterbücher und Tupel zu ziehen.
Wie Sie die Funktion enumerate() mit Python-Tupeln verwenden
Nehmen wir an, shopping_list
ist ein Tupel. In Python sind Tupel ebenfalls Sammlungen, ähnlich wie Python-Listen, aber sie sind unveränderbar. Daher können Sie sie nicht ändern und der Versuch, dies zu tun, führt zu einem Fehler.
Der folgende Codeschnipsel wird initialisiert shopping_list
als Tupel.
shopping_list = ("Obst", "Kekse", "Müsli", "Proteinriegel", "Haftnotizen")
type(shopping_list)
# Tupel
Wenn Sie versuchen, das erste Element im Tupel zu ändern, erhalten Sie einen Fehler, da ein Python-Tupel eine unveränderliche Sammlung ist.
shopping_list<x>[0]</x> = 'Gemüse'
# Ausgabe
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-2-ffdafa961600> in <module>()
---->
1 shopping_list<x>[0]</x> = 'Gemüse'
TypeError: 'tuple' object does not support item assignment
▶ Führen Sie nun den folgenden Codeschnipsel aus, um zu überprüfen, ob die Funktion enumerate()
wie erwartet mit Tupeln funktioniert.
shopping_list = ("Obst", "Kekse", "Müsli", "Proteinriegel", "Haftnotizen")
for index, item in enumerate(shopping_list):
print(f "index:{index}, item:{item}")
So verwenden Sie die Funktion enumerate() mit Python Strings
Sie können die Python-Funktion enumerate() auch verwenden, um eine Schleife durch Strings zu ziehen und gleichzeitig auf die Zeichen und Indizes zuzugreifen.
Hier ist ein Beispiel.
py_str = 'Butterfly'
for index, char in enumerate(py_str):
print(f "index {index}: {char}")
# Ausgabe
index 0: B
index 1: u
index 2: t
index 3: t
index 4: e
index 5: r
index 6: f
index 7: l
index 8: y
Anhand der obigen Ausgabe sehen wir, dass die Zeichen zusammen mit ihren Indizes (0-8) ausgedruckt worden sind.
Conclusion👩🏽💻
Hier ist eine Zusammenfassung dessen, was Sie gelernt haben.
- Sie können für-Schleifen verwenden, um auf die Elemente zuzugreifen und eine separate Zähler- oder Indexvariable zu pflegen.
- Wenn Sie möchten, können Sie die Funktion range() verwenden, um die gültigen Indizes zu ermitteln und auf die Elemente zuzugreifen, indem Sie in die Liste indizieren.
- Als empfohlene Python-Methode können Sie die Python-Funktion enumerate() mit folgender Syntax verwenden: aufzählen(iterable). Standardmäßig beginnt die Zählung oder der Index bei 0.
- Sie können den benutzerdefinierten Startwert mit der Syntax aufzählen(iterable, start) angeben, um den Index ab dem Wert start und die entsprechenden Elemente zu erhalten.
- Sie können die Funktion enumerate verwenden, wenn Sie mit Tupeln, Strings, Wörterbüchern und allgemein mit jeder Python-Iterable arbeiten.
Ich hoffe, Sie haben diese Anleitung zur Funktion enumerate() hilfreich gefunden. Als nächstes erfahren Sie, wie Sie den Index eines Elements in Python-Listen ermitteln können. Programmieren Sie weiter!