Cum să găsiți indexul unui articol în listele Python
Publicat: 2022-06-29În acest ghid, veți învăța cum să găsiți indexul unui element dintr-o listă Python, atât folosind iterații simple, cât și o metodă de listă încorporată index() .
Când lucrați cu liste Python, poate fi necesar să aflați indexul la care apare un anumit element. Puteți face acest lucru prin:
- Parcurgerea listei și verificarea dacă elementul din indexul curent este egal cu valoarea anume
- Folosind metoda listă încorporată
index()
Veți învăța ambele cele de mai sus în acest tutorial. Să începem.
Liste Python, revizuite
În Python, o listă este o colecție de articole — de aceleași tipuri de date sau diferite. Sunt mutabili ; le puteți modifica la locul lor fără a fi nevoie să creați o nouă listă.
Luați în considerare acest exemplu de fruits
: o listă de 5 fructe diferite.
fruits = ["apple","mango","strawberry","pomegranate","melon"]
Puteți obține lungimea oricărui obiect Python utilizând funcția încorporată len()
. Deci, puteți apela funcția len()
cu obiectul listă ( fruits
) ca argument pentru a obține lungimea acesteia, așa cum se arată mai jos.
len(fruits) # Output: 5
Vom folosi lista de fruits
ca exemplu de rulare în acest tutorial.
Indexarea în liste Python
Python urmează indexarea zero . Deci, în orice iterabil Python, primul element este la indexul 0, al doilea element este la indexul 1 și așa mai departe. Dacă lungimea iterabilului este k
, atunci ultimul element se află la indicele k - 1
.
În Python, puteți folosi funcția range() pentru a obține indici pe măsură ce parcurgeți iterabile.
Notă : Când treceți prin
range(k)
, obțineți indicii 0,1,2,...,(k-1). Deci, setândk = len(list)
, puteți obține lista tuturor indicilor validi.
Următoarea celulă de cod explică acest lucru.
for i in range(len(fruits)): print(f"i:{i}, fruit[{i}] is {fruits[i]}") # Output i:0, fruit[0] is apple i:1, fruit[1] is mango i:2, fruit[2] is strawberry i:3, fruit[3] is pomegranate i:4, fruit[4] is melon
Acum că am acoperit elementele de bază ale listelor Python, să învățăm cum să găsim indexul unui element dintr-o listă.

Găsiți indexul unui articol din listă prin iterație folosind for Loops
Să luăm în considerare lista de fruits
din secțiunea anterioară. Vom învăța cum să găsim indexul unui anumit articol din această listă prin iterație folosind bucla for
.
Folosind funcția for Loop și range().
Să reparăm target
: valoarea pe care o căutăm în listă.
Puteți folosi funcția for
loop și range()
pentru a obține lista de indici de la 0
la len(fruits) - 1
.
- Parcurgeți lista de fructe care accesează fiecare index.
- Verificați dacă elementul de la indicele curent i este egal cu ținta.
- Dacă este
True
, imprimați cătarget
a fost găsită la indexuli
.
fruits = ["apple","mango","strawberry","pomegranate","melon"] target = "mango" for i in range(len(fruits)): if fruits[i] == target: print(f"{target} found at index {i}") # Output mango found at index 1
În acest exemplu, șirul țintă 'mango'
apare exact o dată (la indexul 1) în lista de fruits
.
Cu toate acestea, uneori, valoarea țintă apare de mai multe ori sau nu apare deloc. Pentru a gestiona aceste cazuri, să modificăm bucla de mai sus și să încapsulăm conținutul într-o funcție numită find_in_list
.
Înțelegerea definiției funcției
Funcția find_in_list
are doi parametri:
-
target
: valoarea pe care o căutați și -
py_list
: lista Python prin care căutați.
def find_in_list(target,py_list): target_indices = [] for i in range(len(fruits)): if fruits[i] == target: target_indices.append(i) if target_indices == []: print("Sorry, target not found!") else: print(f"{target} is found at indices {target_indices}")
În corpul funcției, inițializam o listă goală target_indices
. Parcurgem lista și accesăm elementele din listă. Dacă ținta a fost găsită la un anumit index, adăugăm acel index la lista target_indices
folosind metoda append()
.
Notă : În Python,
list.append(item)
adaugăitem
la sfârșitullist
.
- Dacă ținta nu este găsită niciodată, atunci
target_indices
este o listă goală; utilizatorul este notificat că ținta nu este prezentă în listă. - Dacă ținta este găsită la mai mulți indici, atunci
target_indices
conține toți acești indici.
Apoi, să redefinim lista de fruits
așa cum se arată.
De data aceasta, căutăm șirul target
'mango'
, care apare de două ori — la indicii 1 și 4.
fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] target = "mango" find_in_list(target,fruits) # Output mango is found at indices [1, 4]
Apelând funcția find_in_list
cu target
și fruits
ca argumente, vedem că ambii indici sunt returnați.
target = "turnip" find_in_list(target,fruits) # Output Sorry, target not found!
Dacă încercați să căutați 'turnip'
care nu este prezent în lista de fruits
, veți primi un mesaj că ținta nu a fost găsită.
Folosind funcția for Loop și enumerate().
În Python, puteți utiliza funcția enumerate()
pentru a accesa atât indexul, cât și elementele simultan, fără a fi nevoie să utilizați funcția range()
.
Următoarea celulă de cod arată cum puteți utiliza funcția enumerate()
pentru a obține atât indici, cât și elemente.
fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] for index,fruit in enumerate(fruits): print(f"Index {index}: {fruit}") # Output Index 0: apple Index 1: mango Index 2: strawberry Index 3: pomegranate Index 4: mango Index 5: melon
Acum, să rescriem funcția Python pentru a găsi indexul elementelor din listă folosind funcția enumerate()
.

def find_in_list(target,py_list): target_indices = [] for index, fruit in enumerate(fruits): if fruit == target: target_indices.append(index) if target_indices == []: print("Sorry, target not found!") else: print(f"{target} is found at indices {target_indices}")
Ca și în secțiunea anterioară, acum puteți apela funcția find_in_list
cu argumente valide.
Puteți traduce definiția funcției de mai sus într-o listă de înțelegere echivalentă și vom face asta în secțiunea următoare.
Găsiți indexul unui articol din listă prin iterație utilizând Lista de înțelegere
Listele de înțelegere în Python vă permit să creați liste din liste existente pe baza unor condiții. Iată construcția generală:
new_list = [<output> for <items in existing iterables> if <condition is true>]
Figura de mai jos descrie modul de identificare a elementelor de înțelegere a listei; folosind aceasta, puteți converti funcția find_in_list
într-o listă de înțelegere.

Folosind cele de mai sus, expresia pentru înțelegerea listei pentru a crea indici țintă este următoarea.
target_indices = [index for index,fruit in enumerate(fruits) if fruit==target]
Ca exercițiu, puteți încerca să rulați fragmentul de cod de mai sus pentru alte câteva exemple.
Găsiți indexul unui element din listă folosind metoda index().
Pentru a găsi indexul unui element dintr-o listă Python, puteți utiliza și metoda încorporată .index()
. Iată sintaxa generală:
list.index(value,start,end)
Analizând metoda de mai sus:
-
value
este valoarea țintă pe care o căutați. -
start
șiend
sunt argumente poziționale opționale ; le puteți folosi pentru a căuta indexul unui articol în porțiunea de listă începând de lastart
și extinzându-se până laend - 1
.
Notă : Metoda .index() returnează numai indexul primei apariții a
value
dinlist
. Chiar și atunci când găsiți indexul unui articol într-o secțiune de listă [start: end-1] , această metodă returnează numai indexul corespunzător primei apariții a articolului.
Să revedem exemplul nostru pentru a înțelege cum funcționează metoda .index()
.
fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] target = "mango" fruits.index(target) 1
Chiar dacă există două apariții de 'mango'
în lista de fruits
, puteți vedea că doar indexul primei apariții a fost returnat.
Pentru a obține indicele celei de-a doua apariții de mango, putem căuta prin porțiunea de listă începând cu indexul 2 și extinzându-se până la indicele 5, așa cum se arată mai jos.
fruits.index(target,2,5) 4
Cum să gestionați ValueErrors în Python
Acum haideți să vedem ce se întâmplă dacă încercați să găsiți indexul unui element care nu este prezent în listă, de exemplu, 'carrot'
.
target = "carrot" fruits.index(target) # Output --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-17-81bd454e44f7> in <module>() 1 target = "carrot" 2 ----> 3 fruits.index(target) ValueError: 'carrot' is not in list
După cum se vede în celula de cod de mai sus, aceasta aruncă o valoare ValueError. În Python, puteți gestiona acest lucru ca o excepție folosind blocurile try
și except
.
Sintaxa generală de utilizat try-except
este următoarea.
try: # to do this except <ErrorType>: # do this to handle <ErrorType> as exception
Folosind blocurile try-except de mai sus, putem trata ValueError ca o excepție.
target = "carrot" try: fruits.index(target) except ValueError: print(f"Sorry, could not find {target} in list") # Output Sorry, could not find carrot in list
Codul de mai sus face următoarele:
- Dacă ținta este prezentă în listă, returnează indexul țintei.
- Dacă ținta nu este prezentă, tratează ValueError ca o excepție și tipărește mesajul de eroare.
Rezumând
Iată un rezumat al diferitelor metode pe care le-ați învățat pentru a găsi indexul unui element dintr-o listă Python.
- Puteți folosi funcția Python for loop și range() pentru a obține elementele și indicii lor respectivi. Verificați dacă elementele de la indici se potrivesc cu ținta.
- De asemenea, puteți utiliza funcția enumerate() pentru a accesa simultan articolul și indexul.
- Puteți utiliza ambele metode de mai sus în interiorul unei expresii de înțelegere a listei.
- Pentru a găsi indexul unui articol într-o listă, puteți utiliza și metoda încorporată .index() .
- list.index(valoare) returnează indexul primei apariții a valorii din listă . Dacă valoarea nu este prezentă, se afișează o valoare ValueError .
- Puteți căuta printr-o anumită porțiune a listei folosind list.index(value, start, end) pentru a căuta apariția unei valori în porțiunea de listă [start:end-1] .
Apoi, învață să sortezi un dicționar Python după cheie sau după valoare. Programare Python fericită!