Python Seznam index() s příkladem

⚡ Chytré shrnutí

Python list index() vrací první pozici daného prvku, zatímco looping konstrukty, seznamové comprehensiony, enumerate(), filter(), knihovna NumPy a more_itertools.locate() rozšiřují tuto techniku ​​o shromažďování všech odpovídajících indexů v seznamu obsahujícím duplicitní hodnoty.

  • 🔘 Metoda index(): Vestavěná funkce index() vrací první nejnižší pozici elementu a akceptuje volitelné počáteční a koncové limity.
  • ☑️ Chyba hodnoty: index() vyvolá ValueError, pokud element chybí, takže volání zabalíme do try-except pro bezpečné vyhledávání.
  • (Tj. Všechny výskyty: Smyčka for, smyčka while nebo seznamová smyčka shromažďují všechny indexy, když se hodnota v seznamu opakuje.
  • 🧪 Vestavění pomocníci: Funkce enumerate() a filter() spárují index s každou položkou, což poskytuje stručné jednořádkové způsoby, jak shromáždit odpovídající pozice.
  • 🛠️ NumPy a další_itertools: np.where() a more_itertools.locate() efektivně vracejí všechny odpovídající indexy pro velké datové sady.
  • 🤖 Pracovní postupy umělé inteligence: Strojové učení vyhledává pozice popisků a odpovídající vzorky podle indexu předtím, než pole odešlou do modelu.

Python Seznam index()

Seznam je kontejner, který ukládá položky různých datových typů (ints, floats, boolean, strings atd.) v uspořádané sekvenci. Je to důležitá datová struktura, která je vestavěná Python. Data se zapisují do hranatých závorek ([]) a hodnoty jsou odděleny čárkou(,).

Položky uvnitř seznamu jsou indexovány s prvním prvkem začínajícím na indexu 0. Změny ve vytvořeném seznamu můžete provádět přidáním nových položek nebo aktualizací, odstraněním stávajících. Může mít také duplicitní položky a vnořený seznam.

V seznamu je k dispozici mnoho metod a jednou z důležitých je index().

Python Seznam index()

Metoda list index() vám pomůže najít první nejnižší index daného prvku. Pokud jsou v seznamu duplicitní prvky, vrátí se první index prvku. Toto je nejjednodušší a přímočarý způsob, jak získat index.

Kromě vestavěné metody list index() můžete index získat i jinými způsoby, například pomocí loo.ping procházením seznamu, použitím comprehensionů v seznamu, metod enumerate() a filtrování.

Metoda list index() vrací první nejnižší index daného prvku.

Syntax

list.index(element, start, end)

parametry

parametry Description
prvek Prvek, který chcete získat index.
Začít Tento parametr je volitelný. Můžete definovat počáteční index pro vyhledávání prvku. Pokud není zadán, výchozí hodnota je 0.
konec Tento parametr je volitelný. Můžete zadat koncový index pro prvek, který má být prohledán. Není-li uveden, zohledňuje se až do konce seznamu.

Návratová hodnota

Metoda list index() vrací index daného prvku. Pokud prvek není v seznamu přítomen, metoda index() vyvolá chybu, například ValueError: 'Element' není v seznamu.

Příklad: Najít index daného prvku.

V seznamu my_list = ['A', 'B', 'C', 'D', 'E', 'F'] bychom chtěli znát index prvku C a F.

Níže uvedený příklad ukazuje, jak získat index.

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'))

Výstup:

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

Příklad: Použití začátku a konce v index()

V tomto příkladu se pokusíme omezit vyhledávání indexu v seznamu pomocí počátečního a koncového indexu.

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))

Výstup:

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

Příklad: Testování metody index() s elementem, který není přítomen.

Pokud se pokusíte v seznamu vyhledat prvek, který v něm chybí, zobrazí se vám chyba, jak je znázorněno níže:

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

Výstup:

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

Použití for-loop k získání indexu prvku v seznamu

U metody list.index() jsme viděli, že poskytuje index prvku, který je předán jako argument.

Nyní si seznam představte takto: můj_seznam = ['Guru', 'Siya', 'Tiya', 'Guru', 'Dakš', 'Rija', 'Guru' ]. Název 'Guru' se v indexu vyskytuje třikrát a chci všechny indexy s názvem 'Guru".

Pomocí cyklu for bychom měli být schopni získat více indexů, jak je znázorněno v níže uvedeném příkladu.

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)

Výstup:

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

Použití while-loop a list.index()

Použití while-loop bude procházet daným seznamem a získat všechny indexy daného prvku.

V seznamu: můj_seznam = ['Guru', 'Siya', 'Tiya', 'Guru', 'Dakš', 'Rija', 'Guru'], potřebujeme všechny indexy elementu 'Guru".

Níže je uveden příklad, který ukazuje, jak získat všechny indexy pomocí smyčky 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)

Výstup:

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

Použití porozumění seznamu k získání indexu prvku v seznamu

Chcete-li získat všechny indexy, rychlým a přímočarým způsobem je využít porozumění seznamu v seznamu.

Seznam porozumění je Python funkce, které se používají pro vytváření nových sekvencí (jako jsou seznamy, slovníky atd.), tj. pomocí sekvencí, které již byly vytvořeny.

Pomáhají redukovat delší smyčky a usnadňují čtení a údržbu kódu.

Následující příklad ukazuje, jak to udělat:

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)

Výstup:

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

Použití Enumerate k získání indexu prvku v seznamu

Funkce Enumerate() je vestavěná funkce dostupná s PythonPomocí funkce enumerate můžete získat všechny indexy prvku v seznamu. Vstupem je iterovatelný objekt (tj. objekt, který lze opakovat) a výstupem je objekt s čítačem pro každou položku.

Následující příklad ukazuje, jak použít enumerate v seznamu k získání všech indexů pro daný prvek.

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'])

Výstup:

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

Použití filtru k získání indexu prvku v seznamu

Metoda filter() filtruje daný seznam na základě zadané funkce. Každý prvek seznamu bude předán funkci a požadované prvky budou filtrovány na základě podmínky dané ve funkci.

Použijme metodu filter() k získání indexů pro daný prvek v seznamu.

Následující příklad ukazuje, jak použít filtr na seznamu.

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)

Výstup:

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

Použití NumPy k získání indexu prvku v seznamu

Knihovna NumPy se používá speciálně pro pole. Zde tedy použijeme NumPy k získání indexu prvku, který potřebujeme, z daného seznamu.

Abychom mohli používat NumPy, musíme jej nainstalovat a importovat.

Zde jsou kroky pro totéž:

Krok 1) Nainstalujte NumPy

pip install numpy

Krok 2) Importujte modul NumPy.

import numpy as np

Krok 3) Pro převod seznamu na pole použijte np.array.

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

Krok 4) Získejte index požadovaného prvku pomocí np.where().

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

Konečný pracovní kód s výstupem je následující:

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)

Výstup:

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

Použití metody more_itertools.locate() k získání indexu prvku v seznamu

Funkce more_itertools.locate() pomáhá najít indexy elementů v seznamu. Tento modul bude fungovat s Python verze 3.5+. Balíček more_itertools Aby bylo možné jej používat, musí být nejprve nainstalován.

Následují kroky k instalaci a použití nástroje more_itertools:

Krok 1) Nainstalujte more_itertools pomocí pipu (Python správce balíčků). Příkaz je

pip install more_itertools

Krok 2) Po dokončení instalace importujte soubor vyhledat modulu, jak je znázorněno níže.

from more_itertools import locate

Nyní můžete využít modul lokace v seznamu, jak je uvedeno níže v příkladu:

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')))

Výstup:

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

Nejčastější dotazy

Metoda index() vyvolá chybu ValueError, pokud prvek chybí. Volání zabalte do bloku try-except nebo nejprve otestujte členství pomocí operátoru in, aby chybějící hodnota nezpůsobila pád programu.

Hodnota vrácená funkcí index() je vždy nezáporná pozice počítaná od začátku. Můžete předat záporné argumenty pro začátek nebo konec vyhledávání, ale samotná funkce index() nikdy nevrací záporný index pro nalezený prvek.

Ano. index() porovnává prvky přesně, takže 'Guru' a 'guru' jsou považovány za různé hodnoty. Hledání nesprávného rozlišování velkých a malých písmen vyvolá chybu ValueError. Pokud potřebujete rozlišovat velká a malá písmena, normalizujte řetězce pomocí funkce lower() před vyhledáváním.

Použijte operátor in, například pokud 'Guru' v my_list. Vrací True nebo False bez vyvolání chyby, takže můžete bezpečně volat index() pouze tehdy, když je prvek v seznamu skutečně přítomen.

Pro jedno vyhledávání je vestavěná funkce index() již efektivní, protože se zastaví na první shodě. Pro opakované vyhledávání více hodnot sestavte mapu slovníku.ping každou hodnotu do jejího indexu, což promění každé vyhledávání v rychlou operaci s konstantním časem.

Python Seznamy poskytují index(), ale nemají metodu find(). index() vyvolá chybu ValueError, když prvek chybí, zatímco řetězec find() vrací -1. U seznamů zachyťte chybu nebo zkontrolujte členství pomocí operátoru in.

Vyhledání indexu elementu pomáhá namapovat kategoriální popisky na číselné pozice, najít, kde se objeví predikovaná třída, nebo zarovnat sloupce prvků před trénováním. NumPy to rozšiřuje o np.where() pro rychlé vyhledávání indexů napříč velkými poli a datovými sadami.

Ano. GitHub Copilot a agentní AI asistenti generují index(), enumerate() a vyhledávání založené na porozumění z prostého komentáře, navrhují bezpečné ošetření chyb pro chybějící hodnoty a refaktorují smyčky, i když byste měli stále testovat okrajové případy a potvrzovat vrácené pozice.

Shrňte tento příspěvek takto: