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 také použít další způsoby, jak získat index, jako je procházení seznamu, pomocí metod list comprehensions, enumerate(), filtrovacích metod.

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í zvažte seznam jako: my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] . Jméno 'Guru' je v indexu přítomno 3krát a já 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: my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] potřebujeme všechny indexy prvku '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 seznamu můžete také použít další způsoby, jak získat index, jako je procházení seznamu, použití porozumění 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.