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.

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]
