Python Popis indeksa() s primjerom
⚡ Pametni sažetak
Python list index() vraća prvu poziciju zadanog elementa, dok looping konstrukti, popisi s razumijevanjem, enumerate(), filter(), biblioteka NumPy i more_itertools.locate() proširuju ovu tehniku kako bi prikupila svaki odgovarajući indeks na popisu koji sadrži duplicirane vrijednosti.

Popis je spremnik koji pohranjuje stavke različitih tipova podataka (ints, float, Booleov, nizovi itd.) u uređenom nizu. To je važna struktura podataka koja je ugrađena Python. Podaci se pišu unutar uglatih zagrada ([]), a vrijednosti se odvajaju zarezom(,).
Stavke unutar popisa su indeksirane s prvim elementom počevši od indeksa 0. Možete napraviti promjene u kreiranom popisu dodavanjem novih stavki ili ažuriranjem, brisanjem postojećih. Također može imati duplicirane stavke i ugniježđeni popis.
Na listi je dostupno mnogo metoda, a jedna od važnih je index().
Python Indeks popisa()
Metoda list index() pomaže vam pronaći prvi najniži indeks zadanog elementa. Ako unutar popisa postoje dupli elementi, vraća se prvi indeks elementa. Ovo je najlakši i najjednostavniji način za dobivanje indeksa.
Osim ugrađene metode list index(), možete koristiti i druge načine za dobivanje indeksa poput looping kroz popis, korištenjem popisnih razumijevanja, enumerate(), metoda filtriranja.
Metoda list index() vraća prvi najniži indeks zadanog elementa.
Sintaksa
list.index(element, start, end)
Parametri
| Parametri | Description |
|---|---|
| element | Element za koji želite da dobijete indeks. |
| početak | Ovaj parametar je opcionalan. Možete definirati početni indeks za pretraživanje elementa. Ako nije naveden, zadana vrijednost je 0. |
| kraj | Ovaj parametar nije obavezan. Možete odrediti krajnji indeks za element koji se traži. Ako nije dano, smatra se do kraja popisa. |
Povratna vrijednost
Metoda list index() vraća indeks zadanog elementa. Ako element nije prisutan na popisu, metoda index() izbacit će pogrešku, na primjer, ValueError: 'Element' nije na popisu.
Primjer: pronaći indeks zadanog elementa.
U listi my_list = ['A', 'B', 'C', 'D', 'E', 'F'], željeli bismo znati indeks za elemente C i F.
Primjer u nastavku pokazuje kako doći do indeksa.
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'))
Izlaz:
The index of element C is 2 The index of element F is 5
Primjer: korištenje početka i kraja u index()
U ovom primjeru pokušat ćemo ograničiti pretraživanje indeksa u popisu koristeći početni i završni indeks.
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))
Izlaz:
The index of element C is 2 The index of element F is 5 The index of element D is 3
Primjer: Testiranje metode index() s elementom koji nije prisutan.
Kada pokušate pretražiti popis za element koji nije prisutan, dobit ćete grešku kao što je prikazano u nastavku:
my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] print("The index of element C is ", my_list.index('Z'))
Izlaz:
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
Korištenje for-petlje za dobivanje indeksa elementa na popisu
Kod metode list.index() vidjeli smo da ona daje indeks elementa koji se prosljeđuje kao argument.
Sada razmotrite popis kao: my_list = ['Guru', 'Sija', 'Tija', 'Guru', 'Dakš', 'Rija', 'Guru']. Ime 'Guru' se pojavljuje 3 puta u indeksu, a želim sve indekse s nazivom 'Guru'.
Korištenjem for-loop-a trebali bismo moći dobiti više indeksa kao što je prikazano u primjeru ispod.
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)
Izlaz:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
Korištenje while-petlje i list.index()
Korištenje while-petlje proći će kroz dani popis da bi se dobili svi indeksi danog elementa.
Na popisu: my_list = ['Guru', 'Sija', 'Tija', 'Guru', 'Dakš', 'Rija', 'Guru'], potrebni su nam svi indeksi elementa 'Guru'.
U nastavku je primjer koji pokazuje kako dobiti sve indekse pomoću while petlje.
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)
Izlaz:
OriginalList is ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] The index for element Guru is [0, 3, 6]
Korištenje razumijevanja popisa za dobivanje indeksa elementa na popisu
Da biste dobili sve indekse, brz i jednostavan način je korištenje razumijevanja popisa na popisu.
Popis shvaćanja su Python funkcije koje se koriste za kreiranje novih nizova (kao što su popisi, rječnici itd.) tj. pomoću nizova koji su već kreirani.
Oni pomažu u smanjenju dužih petlji i čine vaš kod lakšim za čitanje i održavanje.
Sljedeći primjer pokazuje kako to učiniti:
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)
Izlaz:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
Korištenje Enumerate za dobivanje indeksa elementa na popisu
Funkcija Enumerate() je ugrađena funkcija dostupna s PythonMožete koristiti enumerate za dobivanje svih indeksa elementa u listi. Ulaz prima kao iterabilan objekt (tj. objekt koji se može ponavljati u petlji), a izlaz je objekt s brojačem za svaku stavku.
Sljedeći primjer pokazuje kako koristiti enumerate na listi za dobivanje svih indeksa za zadani element.
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'])
Izlaz:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
Korištenje filtra za dobivanje indeksa elementa na popisu
Metoda filter() filtrira zadani popis na temelju zadane funkcije. Svaki element popisa bit će proslijeđen funkciji, a potrebni elementi bit će filtrirani na temelju uvjeta zadanih u funkciji.
Upotrijebimo metodu filter() da dobijemo indekse za dati element na popisu.
Sljedeći primjer pokazuje kako koristiti filter na popisu.
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)
Izlaz:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
Korištenje NumPy za dobivanje indeksa elementa na popisu
NumPy biblioteka se posebno koristi za nizove. Ovdje ćemo koristiti NumPy kako bismo dobili indeks elementa koji nam je potreban s danog popisa.
Da bismo koristili NumPy, moramo ga instalirati i uvesti.
Evo koraka za isto:
Korak 1) Instalirajte NumPy
pip install numpy
Korak 2) Uvezite NumPy modul.
import numpy as np
Korak 3) Koristite np.array za pretvaranje liste u niz.
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] np_array = np.array(my_list)
Korak 4) Dohvatite indeks željenog elementa pomoću np.where().
item_index = np.where(np_array == 'Guru')[0]
Konačni radni kod s izlazom je sljedeći:
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)
Izlaz:
Originallist['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0 3 6]
Korištenje funkcije more_itertools.locate() za dobivanje indeksa elementa u popisu
Funkcija more_itertools.locate() pomaže u pronalaženju indeksa elementa na popisu. Ovaj modul će raditi s Python verzija 3.5+. Paket more_itertools prvo se mora instalirati da biste ga mogli koristiti.
Slijede koraci za instalaciju i korištenje more_itertoolsa:
Korak 1) Instalirajte more_itertools pomoću pip-a (Python upravitelj paketa). Naredba je
pip install more_itertools
Korak 2) Nakon dovršetka instalacije uvezite smjestiti modul kao što je prikazano u nastavku.
from more_itertools import locate
Sada možete koristiti modul za lociranje na popisu kao što je prikazano u primjeru ispod:
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')))
Izlaz:
Originallist : ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
