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.

  • 🔘 metoda index(): Ugrađena funkcija index() vraća prvu najnižu poziciju elementa i prihvaća opcionalne početne i krajnje granice.
  • ☑️ Pogreška vrijednosti: index() podiže ValueError kada element nedostaje, pa poziv treba završiti u try-except za sigurne pretrage.
  • ✅ Sva događanja: For-petlja, while-petlja ili popisno razumijevanje prikuplja svaki indeks kada se vrijednost ponavlja unutar popisa.
  • 🧪 Ugrađeni pomagači: enumerate() i filter() uparuju indeks sa svakom stavkom, dajući koncizne jednolinijske načine za prikupljanje odgovarajućih pozicija.
  • 🛠️ NumPy i more_itertools: np.where() i more_itertools.locate() učinkovito vraćaju sve odgovarajuće indekse za velike skupove podataka.
  • 🤖 Tijekovi rada umjetne inteligencije: Cjevovodi strojnog učenja lociraju pozicije oznaka i odgovarajuće uzorke prema indeksu prije nego što nizovi pošalju model.

Python Indeks popisa()

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]

Pitanja i odgovori

Metoda index() podiže ValueError kada element nedostaje. Poziv se omotava u blok try-except ili se prvo testira članstvo s operatorom in, tako da nedostajuća vrijednost ne sruši vaš program.

Vrijednost koju vraća index() uvijek je nenegativna pozicija brojeći se od početka. Možete proslijediti negativne početne ili završne argumente za ograničavanje pretrage, ali sam index() nikada ne vraća negativni indeks za pronađeni element.

Da. index() točno uspoređuje elemente, pa 'Guru' i 'guru' tretiraju se kao različite vrijednosti. Traženje pogrešnog pisanja po velikim i malim slovima izaziva ValueError. Normalizirajte nizove pomoću lower() prije pretraživanja ako vam je potrebno podudaranje koje nije osjetljivo na velika i mala slova.

Koristite operator `in`, na primjer ako je 'Guru' u my_list. Vraća True ili False bez izazivanja greške, tako da index() možete sigurno pozvati samo kada je element stvarno prisutan na popisu.

Za jedno pretraživanje, ugrađeni index() je već učinkovit jer se zaustavlja na prvom podudaranju. Za višestruko pronalaženje više vrijednosti, izradite mapu rječnikaping svaku vrijednost u njezin indeks, što svaku pretragu pretvara u brzu operaciju s konstantnim vremenom.

Python Liste pružaju index(), ali nemaju metodu find(). index() podiže ValueError kada element nedostaje, dok niz znakova find() vraća -1. Za liste, uhvatite grešku ili provjerite članstvo pomoću operatora in.

Lociranje indeksa elementa pomaže u mapiranju kategoričkih oznaka na numeričke pozicije, pronalaženju mjesta gdje se pojavljuje predviđena klasa ili poravnavanju stupaca značajki prije treniranja. NumPy proširuje ovo s np.where() za brzo pretraživanje indeksa u velikim nizovima i skupovima podataka.

Da. GitHub Copilot i agentski AI asistenti generiraju index(), enumerate() i pretraživanja temeljena na razumijevanju iz običnog komentara, predlažu sigurno rukovanje pogreškama za nedostajuće vrijednosti i refaktoriraju petlje, iako biste i dalje trebali testirati rubne slučajeve i potvrditi vraćene pozicije.

Sažmite ovu objavu uz: