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.

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