De obicei, trebuie să găsim indicele în care se află valoarea particulară. Există multe metode pentru a realiza acest lucru, folosind index(), etc. Dar uneori necesită găsirea tuturor indicilor unei anumite valori în cazul în care aceasta are mai multe apariții în listă. Să discutăm anumite modalități de a găsi indici de valoare în lista dată de Piton .
Modalități de a găsi indici de valoare în listă
Mai jos sunt metodele pe care le vom acoperi în acest articol:
- Folosind metoda naivă
- Folosind Înțelegerea listei
- Folosind Funcția Enumerate().
- Folosind Funcția filter().
- Folosind Biblioteca Numpy
- Folosind un pentru Loop
- Folosind list.index() Metoda cu în timp ce Loop
Găsiți indexul unui articol folosind metoda naivă
Putem realiza această sarcină prin iterarea listei și verificând acea valoare și doar adăugând indexul valorii într-o nouă listă și imprimând-o. Aceasta este metoda de bază a forței brute pentru a realiza această sarcină.
Python3
# initializing list> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list : '> +> str>(test_list))> # using naive method to find indices for 3> res_list>=> []> for> i>in> range>(>0>,>len>(test_list)):> >if> test_list[i]>=>=> 3>:> >res_list.append(i)> # printing resultant list> print>(>'New indices list : '> +> str>(res_list))> |
>
>Ieșire
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Complexitatea timpului: Pe)
Spațiu auxiliar: Pe)
mouse și tipuri de mouse
Găsiți indexul unui articol utilizând Lista de înțelegere
Liste de înțelegere este doar tehnica scurtă pentru a realiza sarcina de forță brută, folosește doar linii mai mici de coduri pentru a realiza sarcina și, prin urmare, economisește timp programatorilor.
Python3
# initializing list> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list : '> +> str>(test_list))> # using list comprehension> # to find indices for 3> res_list>=> [i>for> i>in> range>(>len>(test_list))>if> test_list[i]>=>=> 3>]> # printing resultant list> print>(>'New indices list : '> +> str>(res_list))> |
>
>Ieșire
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Complexitatea timpului: Pe)
Spațiu auxiliar: Pe)
Găsiți indexul unui articol folosind Enumerate() F ungere
Folosind enumera() putem realiza o sarcină similară, aceasta este o tehnică puțin mai rapidă decât cea de mai sus și, prin urmare, se recomandă să fie utilizată peste tehnica de înțelegere a listei.
Python3
# initializing list> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list : '> +> str>(test_list))> # using enumerate()> # to find indices for 3> res_list>=> [i>for> i, value>in> enumerate>(test_list)>if> value>=>=> 3>]> # printing resultant list> print>(>'New indices list : '> +> str>(res_list))> |
>
harald baldr
>Ieșire
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Complexitatea timpului: Pe)
Spațiu auxiliar: Pe)
Găsiți indexul unui articol folosind filter() F ungere
Aceasta este încă o metodă care poate fi folosită pentru a realiza această sarcină specială, filtru() de obicei, este capabil să îndeplinească sarcinile de filtrare și, prin urmare, poate fi folosit și în această situație pentru a realiza această sarcină.
Python3
# initializing list> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list : '> +> str>(test_list))> # using filter() to find indices for 3> res_list>=> list>(>filter>(>lambda> x: test_list[x]>=>=> 3>,>range>(>len>(test_list))))> # printing resultant list> print>(>'New indices list : '> +> str>(res_list))> |
>
>Ieșire
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Complexitatea timpului: Pe)
Spațiu auxiliar: Pe)
Găsiți indexul unui articol utilizând biblioteca numpy
Acest program folosește bibliotecă numpy pentru a converti o listă dată într-o matrice, găsește indicii valorii date în matrice și convertește rezultatul matrice numpy înapoi la o listă. În cele din urmă, tipărește lista de indici.
Python3
import> numpy as np> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # convert the list to a numpy array> test_array>=> np.array(test_list)> # find the indices of the value 3 in the array> res_array>=> np.where(test_array>=>=> 3>)[>0>]> # convert the numpy array back to a list> res_list>=> list>(res_array)> # printing resultant list> print>(>'New indices list : '> +> str>(res_list))> |
>
>
IEȘIRE:
New indices list : [1, 3]>
Complexitatea timpului: O(n), unde n este lungimea listei de intrare.
Spatiu auxiliar: O(n), deoarece creează o nouă matrice numpy cu aceeași lungime ca lista de intrare.
Găsiți indexul unui articol folosind o buclă for
Inițializați o listă goală numită res_list pentru a stoca indicii valorilor țintă. Iterați prin fiecare element din lista de intrare test_list folosind o buclă for. Dacă elementul curent se potrivește cu valoarea țintă, adăugați indexul său la res_list. După ce bucla este terminată , returnează res_list ca rezultat.
Python3
# initializing list> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list: '> +> str>(test_list))> # using a for loop to find indices for 3> res_list>=> []> for> i>in> range>(>len>(test_list)):> >if> test_list[i]>=>=> 3>:> >res_list.append(i)> # printing resultant list> print>(>'New indices list: '> +> str>(res_list))> |
>
>Ieșire
Original list: [1, 3, 4, 3, 6, 7] New indices list: [1, 3]>
Complexitatea timpului: O(n) , unde n este lungimea listei de intrare test_list.
Spațiu auxiliar: O(k) , unde k este numărul de apariții ale valorii țintă.
Găsiți indexul unui articol folosind metoda list.index() cu o buclă while
Inițializați o listă goală de indexuri pentru a stoca indicii valorii date. Inițializați o variabilă i la -1. Rulați o buclă while care continuă până când este întâlnită instrucțiunea break. În bucla while, utilizați list.index() metoda de a găsi indexul valorii date în lista pornind de la indexul i + 1. Dacă indexul este găsit, adăugați-l la lista de indexuri și actualizați valoarea lui i la indexul găsit. Dacă indexul nu este găsit, rupeți bucla while.Tipărește lista de indexuri.
Python3
java cast șir la int
# initializing list> my_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list : '> +> str>(my_list))> # using list.index() method with a while loop to find indices for 3> indexes>=> []> i>=> ->1> while> True>:> >try>:> >i>=> my_list.index(>3>, i>+> 1>)> >indexes.append(i)> >except> ValueError:> >break> print>(>'New indices list : '> +> str>(indexes))> |
>
>Ieșire
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Complexitatea timpului: O(n),Metoda list.index() are o complexitate de timp de O(n) în cel mai rău caz, deoarece trebuie să itereze prin listă pentru a găsi indexul valorii date. Bucla while are, de asemenea, o complexitate de timp de O(n) în cel mai rău caz, deoarece trebuie să parcurgă lista pentru a găsi toate aparițiile valorii date.
Spațiu auxiliar: O(1),Spațiul folosit de lista de indici și variabila i este constant și nu depinde de dimensiunea listei de intrare, deci complexitatea spațiului auxiliar este O(1).