Python Seznam index() s příkladem
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, z nichž nejdůležitější 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 začátek: index pro vyhledání prvku. Pokud není zadána, 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 pro prvek 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 prvkem, který není přítomen.
Když se pokusíte vyhledat index v seznamu pro prvek, který není přítomen, zobrazí se chyba, jak je uvedeno 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: my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Dakš', 'Rija', 'Guru'] . Jméno 'Guru' se v indexu vyskytuje třikrát a chci všechny indexy s názvem 'Guru".
Pomocí for-loop bychom měli být schopni získat více indexů, jak je znázorněno v příkladu níže.
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í while-loop
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 na to:
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á v pythonu. Můžete použít enumerate k získání všech indexů prvku v seznamu. Přebírá vstup jako iterovatelný objekt (tj. objekt, který lze opakovat) a výstupem je objekt s čítačem každé položky.
Následující příklad ukazuje, jak využít enumerate na 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 využ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í more_itertools.locate() k získání indexu prvku v seznamu
More_itertools.locate() pomáhá najít indexy prvku v seznamu. Tento modul bude fungovat s pythonem verze 3.5+. Balík more_itertools Aby bylo možné jej používat, musí být nejprve nainstalován.
Následují kroky k instalaci a používání more_itertools
Krok 1) Nainstalujte more_itertools pomocí pip (správce balíčků python). 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]
Shrnutí
- Metoda list index() vám pomůže najít index daného prvku. Toto je nejjednodušší a přímočarý způsob, jak získat index.
- 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.
- Kromě vestavěné metody list můžete index získat i jinými způsoby, například loo.ping procházení seznamu, použití comprehensionů v seznamu, použití enumerate(), použití filtru atd.
- Použití for-loop a while-loop k získání více indexů daného prvku.
- 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í.
- Pomáhají redukovat delší smyčky a usnadňují čtení a údržbu kódu.
- Můžete použít enumerate k získání všech indexů prvku v seznamu.
- Funkce Enumerate() je vestavěná funkce dostupná v pythonu. Přebírá vstup jako iterovatelný objekt (tj. objekt, který lze opakovat) a výstupem je objekt s čítačem každé položky.
- Metoda filter() filtruje daný seznam na základě zadané funkce.
- Knihovna Numpy se používá speciálně pro pole. Můžete použít NumPy k získání indexu prvku uvedeného v seznamu.
- More_itertools.locate() je další knihovna pythonu, která pomáhá najít indexy daného seznamu.
