In dieser Anleitung erfahren Sie, wie Sie den Index eines Elements in einer Python-Liste ermitteln können, und zwar sowohl mit einfachen Iterationen als auch mit der eingebauten Listenmethode index().

Wenn Sie mit Python-Listen arbeiten, müssen Sie möglicherweise den Index ermitteln, an dem ein bestimmtes Element vorkommt. Dies können Sie tun, indem Sie:

  • Eine Schleife durch die Liste ziehen und prüfen, ob das Element am aktuellen Index gleich dem bestimmten Wert ist
  • Verwendung der eingebauten Listenmethode index()

In diesem Lernprogramm lernen Sie beides kennen. Fangen wir an.👩🏽‍💻

Python Listen, Revisited

In Python ist eine Liste eine Sammlung von Elementen desselben oder verschiedener Datentypen. Sie sind veränderbar; Sie können sie an Ort und Stelle ändern, ohne eine neue Liste erstellen zu müssen.

Betrachten Sie dieses Beispiel fruits: eine Liste mit 5 verschiedenen Früchten.

fruits = ["Apfel", "Mango", "Erdbeere", "Granatapfel", "Melone"]

Sie können die Länge eines beliebigen Python-Objekts mit der eingebauten Funktion len() ermitteln. So können Sie die Funktion len() mit dem Listenobjekt(fruits) als Argument aufrufen, um dessen Länge zu ermitteln, wie unten gezeigt.

len(Früchte)
# Ausgabe: 5

Wir verwenden in diesem Tutorial die Liste fruits als laufendes Beispiel.

Indizierung in Python-Listen

Python folgt der Null-Indexierung. In jeder Python-Iterable steht also das erste Element bei Index 0, das zweite Element bei Index 1 und so weiter. Wenn die Länge der Iterabel k ist, dann steht das letzte Element auf dem Index k - 1.

In Python können Sie die Funktion range() verwenden, um Indizes zu erhalten, während Sie eine Schleife durch die Iterablen ziehen.

Hinweis: Wenn Sie eine Schleife durch range(k) ziehen, erhalten Sie die Indizes 0,1,2,…,(k-1). Wenn Sie also k = len(list) setzen, können Sie die Liste aller gültigen Indizes erhalten.

Die folgende Codezelle erklärt dies.

for i in range(len(fruits)):
  print(f "i:{i}, fruit[{i}] is {fruits[i]}")

# Ausgabe
i:0, Frucht[0 ] ist Apfel
i:1, Frucht[1 ] ist Mango
i:2, Frucht[2 ] ist Erdbeere
i:3, Frucht[3 ] ist Granatapfel
i:4, fruit[4 ] ist Melone

Nachdem wir nun die Grundlagen von Python-Listen kennengelernt haben, wollen wir nun lernen, wie man den Index eines Elements in einer Liste ermittelt.

python-find-in-list

Index eines Listenelements durch Iteration mit for-Schleifen ermitteln

Betrachten wir die Liste fruits aus dem vorherigen Abschnitt. Wir werden lernen, wie man den Index eines bestimmten Elements in dieser Liste durch Iteration mit der for-Schleife findet.

Verwendung der for-Schleife und der Funktion range()

Legen wir das Ziel fest: den Wert, nach dem wir in der Liste suchen.

Sie können die for-Schleife und die Funktion range() verwenden, um die Liste der Indizes von 0 bis len(fruits) - 1 zu erhalten.

  • Durchlaufen Sie die Liste der Früchte, indem Sie auf jeden Index zugreifen.
  • Prüfen Sie, ob das Element am aktuellen Index i mit dem Ziel übereinstimmt.
  • Wenn True, geben Sie aus, dass das Ziel am Index i gefunden wurde.
fruits = ["Apfel", "Mango", "Erdbeere", "Granatapfel", "Melone"]

ziel = "Mango"

for i in range(len(fruits)):
  if fruits[i] == target:
   print(f"{Ziel} gefunden bei Index {i}")

# Ausgabe
mango bei Index 1 gefunden

In diesem Beispiel erscheint die Zielzeichenkette 'mango' genau einmal (bei Index 1) in der Liste fruits.

Manchmal erscheint der Zielwert jedoch mehr als einmal oder überhaupt nicht. Um diese Fälle zu behandeln, ändern wir die obige Schleife und verpacken den Inhalt in eine Funktion namens find_in_list.

Verstehen der Funktionsdefinition

Die Funktion find_in_list hat zwei Parameter:

  • target: der Wert, nach dem Sie suchen, und
  • py_list: die Python-Liste, die Sie durchsuchen wollen.
def find_in_list(ziel,py_list):
  ziel_indizes = []
  for i in range(len(fruits)):
    if fruits[i] == target:
      ziel_indizes.append(i)  
  if target_indices == []:
    print("Sorry, Ziel nicht gefunden!")
  sonst:
    print(f"{Ziel} wurde bei den Indizes {Ziel_Indizes} gefunden")

Im Hauptteil der Funktion initialisieren wir eine leere Liste target_indices. Wir durchlaufen die Liste in einer Schleife und greifen auf die Listenelemente zu. Wenn das Ziel an einem bestimmten Index gefunden wurde, fügen wir diesen Index mit der Methode append() zur Liste target_indices hinzu.

Hinweis: In Python wird mit list.append(item ) das Element am Ende der Liste hinzugefügt.

  • Wenn das Ziel nie gefunden wird, ist target_indices eine leere Liste; der Benutzer wird darüber informiert, dass das Ziel nicht in der Liste vorhanden ist.
  • Wenn das Ziel bei mehr als einem Index gefunden wird, enthält target_indices alle Indizes.

Als nächstes definieren wir die Liste mit den Früchten wie gezeigt neu.

Diesmal suchen wir nach der Zielzeichenkette 'Mango', die zweimal vorkommt – bei den Indizes 1 und 4.

fruits = ["Apfel", "Mango", "Erdbeere", "Granatapfel", "Mango", "Melone"]
ziel = "Mango"
find_in_list(ziel,früchte)

# Ausgabe
mango wird bei den Indizes [1, 4] gefunden

Wenn Sie die Funktion find_in_list mit target und fruits als Argumente aufrufen, sehen wir, dass beide Indizes zurückgegeben werden.

ziel = "rübe"
find_in_list(ziel,früchte)

# Ausgabe
Sorry, target nicht gefunden!

Wenn Sie versuchen, nach 'Rübe' zu suchen, die nicht in der Liste der Früchte enthalten ist, erhalten Sie die Meldung, dass das Ziel nicht gefunden wurde.

Verwendung der for-Schleife und der Funktion enumerate()

In Python können Sie die Funktion enumerate() verwenden, um gleichzeitig auf den Index und die Elemente zuzugreifen, ohne die Funktion range() verwenden zu müssen.

Die folgende Codezelle zeigt, wie Sie die Funktion enumerate() verwenden können, um sowohl die Indizes als auch die Einträge zu erhalten.

fruits = ["Apfel", "Mango", "Erdbeere", "Granatapfel", "Mango", "Melone"]
for index,fruit in enumerate(fruits):
  print(f "Index {index}: {Frucht}")

# Ausgabe
Index 0: Apfel
Index 1: Mango
Index 2: Erdbeere
Index 3: Granatapfel
Index 4: Mango
Index 5: Melone

Lassen Sie uns nun die Python-Funktion umschreiben, um den Index der Elemente in der Liste mit der Funktion enumerate() zu finden.

def find_in_list(ziel,py_list):
  ziel_indizes = []
  for index, fruit in enumerate(fruits):
   if fruit == target:
    target_indices.append(index) 
  if ziel_indizes == []:
    print("Sorry, Ziel nicht gefunden!")
  sonst:
    print(f"{Ziel} wurde bei den Indizes {Ziel_Indizes} gefunden")

Wie im vorherigen Abschnitt können Sie nun die Funktion find_in_list mit gültigen Argumenten aufrufen.

Sie können die obige Funktionsdefinition in ein äquivalentes Listenverständnis übersetzen und das werden wir im nächsten Abschnitt tun.

Index eines Listenelements durch Iteration mit List Comprehension finden

MitList Comprehensions in Python können Sie Listen aus bestehenden Listen erstellen, die auf einer bestimmten Bedingung basieren. Hier ist das allgemeine Konstrukt:

new_list = [ for  if ] 

In der folgenden Abbildung wird beschrieben, wie Sie die Elemente des Listenverständnisses identifizieren können. Damit können Sie die Funktion find_in_list in ein Listenverständnis umwandeln.

python-find-in-list

Der Ausdruck für das Listenverständnis zur Erstellung von Zielindizes sieht wie folgt aus.

target_indices = [index for index,fruit in enumerate(fruits) if fruit==target]

Als Übung können Sie versuchen, den obigen Codeschnipsel für einige andere Beispiele auszuführen.

Index eines Listenelements mit der Methode index() ermitteln

Um den Index eines Elements in einer Python-Liste zu ermitteln, können Sie auch die eingebaute Methode .index() verwenden. Hier ist die allgemeine Syntax:

list.index(Wert,Anfang,Ende)

Parsing der obigen Methode:

  • wert ist der Zielwert, nach dem Sie suchen.
  • start und end sind optionale Positionsargumente. Sie können sie verwenden, um den Index eines Elements in der Listenscheibe zu suchen, der bei start beginnt und bis end - 1 reicht.

Hinweis: Die Methode .index() gibt nur den Index des ersten Vorkommens eines Wertes in der Liste zurück. Auch wenn Sie den Index eines Elements in einer Listenscheibe [start: end-1] suchen, gibt diese Methode nur den Index zurück, der dem ersten Vorkommen des Elements entspricht.

Gehen wir noch einmal auf unser Beispiel ein, um zu verstehen, wie die Methode .index() funktioniert.

fruits = ["Apfel", "Mango", "Erdbeere", "Granatapfel", "Mango", "Melone"]
ziel = "Mango"

fruits.index(ziel)
1

Obwohl es zwei Vorkommen von 'mango' in der Liste der Früchte gibt, sehen Sie, dass nur der Index des ersten Vorkommens zurückgegeben wurde.

Um den Index des zweiten Vorkommens von “mango” zu erhalten, können wir den Listenausschnitt ab Index 2 bis zu Index 5 durchsuchen, wie unten gezeigt.

fruits.index(ziel,2,5)
4

Wie man ValueErrors in Python behandelt

Schauen wir uns nun an, was passiert, wenn Sie versuchen, den Index eines Elements zu finden, das nicht in der Liste vorhanden ist, z.B. 'Karotte'.

ziel = "Karotte"

früchte.index(Ziel)

# Ausgabe
---------------------------------------------------------------------------
ValueError Traceback (jüngster Aufruf zuletzt)
 in ()
      1 Ziel = "Karotte"
      2 
---->
 3 fruits.index(ziel)

ValueError: 'Karotte' ist nicht in der Liste

Wie Sie in der obigen Codezelle sehen, wird ein ValueError ausgelöst. In Python können Sie dies als Ausnahme behandeln, indem Sie die Blöcke try und except verwenden.

Die allgemeine Syntax zur Verwendung von try-except lautet wie folgt.

try:
  # um dies zu tun
except :
  # dies tun, um  als Ausnahme zu behandeln

Mit den obigen try-except-Blöcken können wir ValueError als Ausnahme behandeln.

ziel = "Karotte"
try:
  früchte.index(Ziel)
except ValueError:
  print(f "Sorry, konnte {Ziel} nicht in der Liste finden")

# Ausgabe
Sorry, konnte die Karotte nicht in der Liste finden

Der obige Code tut Folgendes:

  • Wenn das Ziel in der Liste vorhanden ist, gibt er den Index des Ziels zurück.
  • Wenn das Ziel nicht vorhanden ist, behandelt er ValueError als Ausnahme und gibt die Fehlermeldung aus.

Zusammenfassend

Hier ist eine Zusammenfassung der verschiedenen Methoden, die Sie gelernt haben, um den Index eines Elements in einer Python-Liste zu finden.

  • Sie können die for-Schleife und die Funktion range() von Python verwenden, um die Elemente und ihre jeweiligen Indizes zu ermitteln. Prüfen Sie, ob die Elemente an den Indizes mit dem Ziel übereinstimmen.
  • Sie können auch die Funktion enumerate() verwenden, um gleichzeitig auf das Element und den Index zuzugreifen.
  • Sie können beide oben genannten Methoden innerhalb eines Listenverstehensausdrucks verwenden.
  • Um den Index eines Elements in einer Liste zu ermitteln, können Sie auch die eingebaute Methode .index() verwenden.
  • list.index(Wert) gibt den Index des ersten Vorkommens von Wert in der Liste zurück. Wenn der Wert nicht vorhanden ist, wird ein ValueError ausgelöst.
  • Mit list.index(value, start, end) können Sie einen bestimmten Teil der Liste durchsuchen, um nach dem Vorkommen eines Wertes im Teil der Liste [start:end-1] zu suchen.

Als nächstes lernen Sie, wie Sie ein Python-Wörterbuch nach Schlüssel oder Wert sortieren. Viel Spaß beim Programmieren mit Python!