Python Lista indeksu () z przykładem

⚡ Inteligentne podsumowanie

Python Funkcja list index() zwraca pierwszą pozycję danego elementu, podczas gdy looping Konstrukcje, wyrażenia listowe, enumerate(), filter(), biblioteka NumPy i more_itertools.locate() rozszerzają tę technikę, umożliwiając zebranie wszystkich pasujących indeksów na liście zawierającej zduplikowane wartości.

  • 🔘 metoda index(): Wbudowana funkcja index() zwraca pierwszą najniższą pozycję elementu i akceptuje opcjonalne ograniczenia początkowe i końcowe.
  • Błąd wartości: index() wywołuje wyjątek ValueError, gdy element jest nieobecny, dlatego w celu zapewnienia bezpieczeństwa wyszukiwań należy otoczyć wywołanie metodą try-except.
  • Wszystkie wystąpienia: Pętla for, pętla while i comprehension listy zbierają wszystkie indeksy, gdy wartość powtarza się na liście.
  • 🧪 Wbudowane pomocniki: Funkcje enumerate() i filter() łączą indeks z każdym elementem, zapewniając zwięzłe, jednowierszowe metody zbierania pasujących pozycji.
  • 🛠️. NumPy i more_itertools: np.where() i more_itertools.locate() wydajnie zwracają wszystkie pasujące indeksy w przypadku dużych zbiorów danych.
  • 🤖 Przepływy pracy AI: Procesy uczenia maszynowego lokalizują pozycje etykiet i pasujące próbki według indeksu przed przekazaniem tablic do modelu.

Python Indeks listy()

Lista to kontener przechowujący elementy różnych typów danych (int, float, wartość logiczna, ciągi znaków itp.) w uporządkowanej kolejności. Jest to ważna struktura danych, która jest wbudowana PythonDane są zapisywane w nawiasach kwadratowych ([]), a wartości są rozdzielone przecinkami (,).

Pozycje znajdujące się na liście indeksowane są od pierwszego elementu rozpoczynającego się od indeksu 0. W utworzonej liście możesz dokonywać zmian poprzez dodanie nowych pozycji lub aktualizację, usunięcie istniejących. Może również zawierać zduplikowane elementy i zagnieżdżoną listę.

Na liście dostępnych jest wiele metod, a jedną z ważniejszych jest index().

Python Indeks listy()

Metoda list Index() pomaga znaleźć pierwszy najniższy indeks danego elementu. Jeśli na liście znajdują się zduplikowane elementy, zwracany jest pierwszy indeks elementu. Jest to najłatwiejszy i najprostszy sposób uzyskania indeksu.

Oprócz wbudowanej metody index() listy, możesz również użyć innych sposobów uzyskania indeksu, takich jak looping poprzez listę, wykorzystując wyrażenia listowe, enumerate(), metody filtrujące.

Metoda list Index() zwraca pierwszy najniższy indeks danego elementu.

Składnia

list.index(element, start, end)

Parametry

Parametry OPIS
element Element, dla którego chcesz uzyskać indeks.
początek Ten parametr jest opcjonalny. Możesz zdefiniować indeks początkowy wyszukiwania elementu. Jeśli nie zostanie podany, wartością domyślną jest 0.
zakończenia Ten parametr jest opcjonalny. Można określić indeks końcowy szukanego elementu. Jeżeli nie zostanie podany, jest on uwzględniany do końca listy.

Wartość zwracana

Metoda list Index() zwraca indeks danego elementu. Jeśli elementu nie ma na liście, metoda Index() zgłosi błąd, np. ValueError: „Element” nie znajduje się na liście.

Przykład: Aby znaleźć indeks danego elementu.

Na liście my_list = ['A', 'B', 'C', 'D', 'E', 'F'] chcielibyśmy poznać indeks elementów C i F.

Poniższy przykład pokazuje, jak uzyskać indeks.

my_list = ['A', 'B', 'C', 'D', 'E', 'F']
print("The index of element C is ", my_list.index('C'))
print("The index of element F is ", my_list.index('F'))

Wyjście:

The index of element C is  2
The index of element F is  5

Przykład: użycie początku i końca w indeksie()

W tym przykładzie spróbujemy ograniczyć wyszukiwanie według indeksu na liście, używając indeksu początkowego i końcowego.

my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print("The index of element C is ", my_list.index('C', 1, 5))
print("The index of element F is ", my_list.index('F', 3, 7))
#using just the startindex
print("The index of element D is ", my_list.index('D', 1))

Wyjście:

The index of element C is  2
The index of element F is  5
The index of element D is  3

Przykład: Aby przetestować metodę index() przy użyciu elementu, który nie istnieje.

Próba wyszukania na liście elementu, którego nie ma, spowoduje wyświetlenie poniższego komunikatu o błędzie:

my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print("The index of element C is ", my_list.index('Z'))

Wyjście:

Traceback (most recent call last):
File "display.py", line 3, in <module>
print("The index of element C is ", my_list.index('Z'))
ValueError: 'Z' is not in list

Użycie pętli for w celu uzyskania indeksu elementu na liście

W przypadku metody list.index() widzieliśmy, że podaje ona indeks elementu przekazywanego jako argument.

Teraz rozważ listę jako: my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']. Nazwa 'Guru' występuje 3 razy w indeksie, a ja chcę mieć wszystkie indeksy o nazwie 'Guru".

Używając pętli for powinniśmy być w stanie pobrać wiele indeksów, jak pokazano w przykładzie poniżej.

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
all_indexes = [] 
for i in range(0, len(my_list)) : 
    if my_list[i] == 'Guru' : 
        all_indexes.append(i)
print("Originallist ", my_list)
print("Indexes for element Guru : ", all_indexes)

Wyjście:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

Używanie pętli while i list.index()

Użycie pętli while spowoduje przejście przez podaną listę w celu uzyskania wszystkich indeksów danego elementu.

Na liście: my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'], potrzebujemy wszystkich indeksów elementu 'Guru".

Poniżej znajduje się przykład pokazujący, jak pobrać wszystkie indeksy za pomocą pętli while.

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
result = []
elementindex = -1
while True:
    try:
        elementindex = my_list.index('Guru', elementindex+1)
        result.append(elementindex)
    except  ValueError:
        break
print("OriginalList is ", my_list)
print("The index for element Guru is ", result)

Wyjście:

OriginalList is  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
The index for element Guru is  [0, 3, 6]

Używanie rozumienia list do uzyskania indeksu elementu na liście

Aby uzyskać wszystkie indeksy, szybkim i prostym sposobem jest skorzystanie z funkcji rozumienia list na liście.

Rozwiązania listowe są Python funkcje służące do tworzenia nowych ciągów (takich jak listy, słowniki itp.), czyli wykorzystujące już utworzone ciągi.

Pomagają zredukować dłuższe pętle i sprawiają, że kod jest łatwiejszy do odczytania i utrzymania.

Poniższy przykład pokazuje, jak to zrobić:

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist ", my_list)
all_indexes = [a for a in range(len(my_list)) if my_list[a] == 'Guru']
print("Indexes for element Guru : ", all_indexes)

Wyjście:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

Użycie Enumerate w celu uzyskania indeksu elementu na liście

Funkcja Enumerate() jest wbudowaną funkcją dostępną w PythonMożesz użyć funkcji enumerate, aby uzyskać wszystkie indeksy elementu na liście. Funkcja ta przyjmuje dane wejściowe jako obiekt iterowalny (tj. obiekt, który można zapętlić), a dane wyjściowe to obiekt z licznikiem dla każdego elementu.

Poniższy przykład pokazuje, jak użyć polecenia enumerate na liście, aby pobrać wszystkie indeksy danego elementu.

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist ", my_list)
print("Indexes for element Guru : ", [i for i, e in enumerate(my_list) if e == 'Guru'])

Wyjście:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

Użycie filter do pobrania indeksu elementu na liście

Metoda filter() filtruje podaną listę na podstawie podanej funkcji. Każdy element listy zostanie przekazany do funkcji, a wymagane elementy zostaną odfiltrowane na podstawie warunku podanego w funkcji.

Użyjmy metody filter(), aby uzyskać indeksy dla danego elementu na liście.

Poniższy przykład pokazuje, jak używać filtru na liście.

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist ", my_list)
all_indexes = list(filter(lambda i: my_list[i] == 'Guru', range(len(my_list)))) 
print("Indexes for element Guru : ", all_indexes)

Wyjście:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

Używanie NumPy do pobierania indeksu elementu na liście

Biblioteka NumPy jest przeznaczona specjalnie do tablic. Dlatego tutaj wykorzystamy NumPy, aby pobrać indeks potrzebnego elementu z podanej listy.

Aby skorzystać z NumPy, musimy go zainstalować i zaimportować.

Oto kroki, które należy wykonać:

Krok 1) Zainstaluj NumPy

pip install numpy

Krok 2) Zaimportuj moduł NumPy.

import numpy as np

Krok 3) Użyj np.array, aby przekonwertować listę na tablicę.

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
np_array = np.array(my_list)

Krok 4) Pobierz indeks interesującego Cię elementu, używając np.where().

item_index = np.where(np_array == 'Guru')[0]

Ostateczny działający kod z danymi wyjściowymi jest następujący:

import numpy as np
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
np_array = np.array(my_list)
item_index = np.where(np_array == 'Guru')[0]
print("Originallist ", my_list)
print("Indexes for element Guru :", item_index)

Wyjście:

Originallist['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru : [0 3 6]

Użycie more_itertools.locate() w celu uzyskania indeksu elementu na liście

Funkcja more_itertools.locate() pomaga znaleźć indeksy elementu na liście. Ten moduł będzie działać z Python wersja 3.5+. Pakiet more_itertools aby z niego skorzystać, należy go najpierw zainstalować.

Poniżej przedstawiono kroki umożliwiające instalację i korzystanie z more_itertools:

Krok 1) Zainstaluj more_itertools za pomocą pip (Python Menedżer pakietów). Polecenie to

pip install more_itertools

Krok 2) Po zakończeniu instalacji zaimportuj plik zlokalizować moduł jak pokazano poniżej.

from more_itertools import locate

Teraz możesz skorzystać z modułu lokalizacji na liście, jak pokazano poniżej w przykładzie:

from more_itertools import locate
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist : ", my_list)
print("Indexes for element Guru :", list(locate(my_list, lambda x: x == 'Guru')))

Wyjście:

Originallist :  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru : [0, 3, 6]

FAQ

Metoda index() zgłasza błąd ValueError, gdy brakuje elementu. Otocz wywołanie blokiem try-except lub najpierw sprawdź przynależność operatorem in, aby brak wartości nie spowodował awarii programu.

Wartość zwracana przez index() to zawsze nieujemna pozycja liczona od początku. Można przekazać ujemne argumenty początkowe lub końcowe, aby ograniczyć zakres wyszukiwania, ale samo index() nigdy nie zwraca ujemnego indeksu dla znalezionego elementu.

Tak. index() porównuje elementy dokładnie, więc 'Guru„ i „guru” są traktowane jako różne wartości. Wyszukiwanie z uwzględnieniem wielkości liter powoduje błąd ValueError. Znormalizuj ciągi znaków za pomocą funkcji lower() przed wyszukiwaniem, jeśli potrzebujesz dopasowania bez uwzględniania wielkości liter.

Użyj operatora in, na przykład jeśli 'Guru' w my_list. Zwraca wartość True lub False bez zgłaszania błędu, więc możesz bezpiecznie wywołać index() tylko wtedy, gdy element faktycznie znajduje się na liście.

W przypadku pojedynczego wyszukiwania wbudowana funkcja index() jest już wydajna, ponieważ zatrzymuje się na pierwszym dopasowaniu. Aby wielokrotnie wyszukiwać wiele wartości, zbuduj mapę słownikową.ping każdą wartość do jej indeksu, co sprawia, że ​​każde wyszukiwanie staje się szybką operacją o stałym czasie trwania.

Python Listy udostępniają metodę index(), ale nie mają metody find(). Metoda index() zgłasza błąd ValueError, gdy element jest nieobecny, natomiast find() zwraca wartość -1. W przypadku list zamiast tego należy przechwycić błąd lub sprawdzić przynależność za pomocą operatora in.

Zlokalizowanie indeksu elementu pomaga mapować etykiety kategorii na pozycje numeryczne, znaleźć miejsce pojawienia się przewidywanej klasy lub wyrównać kolumny obiektów przed trenowaniem. NumPy rozszerza to o np.where(), umożliwiając szybkie wyszukiwanie indeksów w dużych tablicach i zestawach danych.

Tak. GitHub Copilot i asystenci AI generują wyszukiwania oparte na index(), enumerate() i rozumieniu na podstawie prostego komentarza, sugerują bezpieczną obsługę błędów w przypadku brakujących wartości oraz pętle refaktoryzacji, choć nadal należy testować przypadki brzegowe i potwierdzać zwracane pozycje.

Podsumuj ten post następująco: