So finden Sie den Index eines Elements in Python-Listen

In diesem Leitfaden erfahren Sie, wie Sie den Index eines Elements in einer Python-Liste finden, sowohl mit einfachen Iterationen als auch mit einer integrierten Listenmethode index().

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

  • Durchlaufen der Liste und Prüfen, ob das Element am aktuellen Index gleich dem bestimmten Wert ist
  • Verwendung der eingebauten Listenmethode index()

Sie lernen beides in diesem Tutorial. Fangen wir an.👩🏽‍💻

Python-Listen, überarbeitet

In Python ist eine Liste eine Sammlung von Elementen – mit denselben oder unterschiedlichen Datentypen. Sie sind veränderlich; Sie können sie direkt ändern, ohne eine neue Liste erstellen zu müssen.

Betrachten Sie diese Beispielfrüchte: eine Liste mit 5 verschiedenen Früchten.

fruits = ["apple","mango","strawberry","pomegranate","melon"]

Sie können die Länge eines beliebigen Python-Objekts ermitteln, indem Sie die integrierte Funktion len() verwenden. Sie können also die Funktion len() mit dem Listenobjekt (fruits) als Argument aufrufen, um seine Länge zu erhalten, wie unten gezeigt.

len(fruits)
# Output: 5

Wir verwenden die Obstliste als laufendes Beispiel in diesem Tutorial.

Indizierung in Python-Listen

Python folgt der Nullindizierung. In jedem Python-Iterable befindet sich das erste Element bei Index 0, das zweite Element bei Index 1 und so weiter. Wenn die Länge der Iterable k ist, befindet sich das letzte Element beim Index k – 1.

In Python können Sie die Funktion range() verwenden, um Indizes zu erhalten, während Sie iterables durchlaufen.

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

Die folgende Codezelle erklärt dies.

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

# Output
i:0, fruit[0] is apple
i:1, fruit[1] is mango
i:2, fruit[2] is strawberry
i:3, fruit[3] is pomegranate
i:4, fruit[4] is melon

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

Finden Sie den Index eines Listenelements durch Iteration mit for-Schleifen

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

Verwendung von for Loop und range() Funktion

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

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

  • Durchlaufen Sie die Liste der Früchte, die auf jeden Index zugreifen.
  • Überprüfen Sie, ob das Element am aktuellen Index i gleich dem Ziel ist.
  • Wenn True, drucke aus, dass das Ziel am Index i gefunden wurde.
fruits = ["apple","mango","strawberry","pomegranate","melon"]

target = "mango"

for i in range(len(fruits)):
  if fruits[i] == target:
   print(f"{target} found at index {i}")

# Output
mango found at index 1

In diesem Beispiel kommt die Zielzeichenfolge „mango“ genau einmal (bei Index 1) in der Liste Früchte vor.

  Telefon empfängt keine Textnachrichten – So beheben Sie das Problem

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

Verständnis der Funktionsdefinition

Die Funktion find_in_list hat zwei Parameter:

  • Ziel: der Wert, nach dem Sie suchen, und
  • py_list: die Python-Liste, die Sie durchsuchen.
def find_in_list(target,py_list):
  target_indices = []
  for i in range(len(fruits)):
    if fruits[i] == target:
      target_indices.append(i)  
  if target_indices == []:
    print("Sorry, target not found!")
  else:
    print(f"{target} is found at indices {target_indices}")

Im Funktionskörper initialisieren wir eine leere Liste target_indices. Wir durchlaufen die Liste und greifen auf die Listenelemente zu. Wenn das Ziel an einem bestimmten Index gefunden wurde, fügen wir diesen Index mithilfe der Methode append() zur Liste target_indices hinzu.

Hinweis: In Python fügt list.append(item) item am Ende der Liste hinzu.

  • Wenn das Ziel nie gefunden wird, ist target_indices eine leere Liste; der Benutzer wird benachrichtigt, dass das Ziel nicht in der Liste vorhanden ist.
  • Wenn das Ziel an mehr als einem Index gefunden wird, enthält target_indices alle diese Indizes.

Als nächstes definieren wir die Obstliste wie gezeigt neu.

Dieses Mal suchen wir nach der Zielzeichenfolge „mango“, die zweimal vorkommt – an den Indizes 1 und 4.

fruits = ["apple","mango","strawberry","pomegranate","mango","melon"]
target = "mango"
find_in_list(target,fruits)

# Output
mango is found at indices [1, 4]

Beim Aufruf der Funktion find_in_list mit Ziel und Früchten als Argumenten sehen wir, dass beide Indizes zurückgegeben werden.

target = "turnip"
find_in_list(target,fruits)

# Output
Sorry, target not found!

Wenn Sie versuchen, nach „Rüben“ zu suchen, die nicht in der Obstliste vorhanden sind, erhalten Sie eine Meldung, dass das Ziel nicht gefunden wurde.

Verwendung von for Loop und enumerate() Funktion

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

  5 Tipps zum Aufbau Ihres ersten PCs

Die folgende Codezelle zeigt, wie Sie die Funktion enumerate() verwenden können, um sowohl die Indizes als auch die Elemente abzurufen.

fruits = ["apple","mango","strawberry","pomegranate","mango","melon"]
for index,fruit in enumerate(fruits):
  print(f"Index {index}: {fruit}")

# Output
Index 0: apple
Index 1: mango
Index 2: strawberry
Index 3: pomegranate
Index 4: mango
Index 5: melon

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

def find_in_list(target,py_list):
  target_indices = []
  for index, fruit in enumerate(fruits):
   if fruit == target:
    target_indices.append(index) 
  if target_indices == []:
    print("Sorry, target not found!")
  else:
    print(f"{target} is found at indices {target_indices}")

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

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

Finden Sie den Index eines Listenelements durch Iteration unter Verwendung von List Comprehension

Listenverständnisse in Python ermöglichen es Ihnen, Listen aus bestehenden Listen basierend auf einer bestimmten Bedingung zu erstellen. Hier ist das allgemeine Konstrukt:

new_list = [<output> for <items in existing iterables> if <condition is true>] 

Die folgende Abbildung beschreibt, wie die Elemente des Listenverständnisses identifiziert werden; Damit können Sie die Funktion find_in_list in eine List Comprehension umwandeln.

Unter Verwendung des Obigen lautet der Ausdruck für das Listenverständnis zum Erstellen von Zielindizes wie folgt.

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

Als Übung können Sie versuchen, das obige Code-Snippet für einige andere Beispiele auszuführen.

Finden Sie den Index eines Listenelements mit der Methode index()

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

list.index(value,start,end)

Analysieren der obigen Methode:

  • value ist der Zielwert, nach dem Sie suchen.
  • start und end sind optionale Positionsargumente; Sie können sie verwenden, um den Index eines Elements im Listensegment zu suchen, beginnend am Anfang und bis zum Ende – 1.

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

Sehen wir uns unser Beispiel noch einmal an, um zu verstehen, wie die Methode .index() funktioniert.

fruits = ["apple","mango","strawberry","pomegranate","mango","melon"]
target = "mango"

fruits.index(target)
1

Obwohl „mango“ zweimal in der Fruchtliste vorkommt, können Sie sehen, dass nur der Index des ersten Vorkommens zurückgegeben wurde.

  Wie finden Sie Ihre Instagram-URL?

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

fruits.index(target,2,5)
4

Umgang mit ValueErrors in Python

Sehen 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“.

target = "carrot"

fruits.index(target)

# Output
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-17-81bd454e44f7> in <module>()
      1 target = "carrot"
      2 
----> 3 fruits.index(target)

ValueError: 'carrot' is not in list

Wie in der obigen Codezelle zu sehen ist, löst dies a aus WertFehler. In Python können Sie dies als Ausnahme behandeln, indem Sie die Try- und Except-Blöcke verwenden.

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

try:
  # to do this
except <ErrorType>:
  # do this to handle <ErrorType> as exception

Mit den obigen Try-Except-Blöcken können wir ValueError als Ausnahme behandeln.

target = "carrot"
try:
  fruits.index(target)
except ValueError:
  print(f"Sorry, could not find {target} in list")

# Output
Sorry, could not find carrot in list

Der obige Code macht folgendes:

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

Zusammenfassen

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 Python-Funktion for loop und range() verwenden, um die Elemente und ihre jeweiligen Indizes abzurufen. Überprü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 Listenverständnisausdrucks verwenden.
  • Um den Index eines Elements in einer Liste zu finden, können Sie auch die integrierte Methode .index() verwenden.
  • list.index(value) gibt den Index des ersten Vorkommens von value in der Liste zurück. Wenn der Wert nicht vorhanden ist, wird ein ValueError ausgelöst.
  • Sie können einen bestimmten Teil der Liste mit list.index(value, start, end) durchsuchen, um nach dem Vorkommen eines Werts im Listenteil zu suchen [start:end-1].

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