logo

Python | Måter å finne verdiindekser i liste

Vanligvis trenger vi å finne indeksen der den bestemte verdien er plassert. Det er mange metoder for å oppnå det ved å bruke index() osv. Men noen ganger krever det å finne alle indeksene for en bestemt verdi i tilfelle den har flere forekomster i listen. La oss diskutere visse måter å finne verdiindekser i den gitte listen over Python .

Måter å finne verdiindekser i listen

Nedenfor er metodene vi vil dekke i denne artikkelen:



Finn indeksen til et element ved å bruke den naive metoden

Vi kan oppnå denne oppgaven ved å iterere gjennom listen og se etter den verdien og bare legge til verdiindeksen i en ny liste og skrive den ut. Dette er den grunnleggende brute force-metoden for å oppnå denne oppgaven.

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))>

>

>

Produksjon

Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>

Tidskompleksitet: På)
Hjelpeplass: På)

ops

Finn indeksen til et element ved å bruke listeforståelse

Listeforståelse er bare stenografiteknikken for å oppnå brute force-oppgaven, bruker bare mindre linjer med koder for å oppnå oppgaven og sparer dermed programmerere tid.

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))>

>

>

Produksjon

Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>

Tidskompleksitet: På)
Hjelpeplass: På)

Finn indeksen til et element ved å bruke Enumerate() F avskjæring

Ved hjelp av enumerate() vi kan oppnå en lignende oppgave, dette er en litt raskere teknikk enn ovenfor og anbefales derfor brukt over listeforståelsesteknikken.

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))>

>

>

Produksjon

Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>

Tidskompleksitet: På)
Hjelpeplass: På)

Finn indeksen til et element ved å bruke filter() F avskjæring

Dette er nok en metode som kan brukes for å oppnå denne spesielle oppgaven, filter() er vanligvis i stand til å utføre filtreringsoppgavene og kan derfor også brukes i denne situasjonen for å oppnå denne oppgaven.

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))>

>

sleng inn java unntakshåndtering

>

Produksjon

Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>

Tidskompleksitet: På)
Hjelpeplass: På)

Finn indeksen til et element ved å bruke numpy Library

Dette programmet bruker numpy bibliotek for å konvertere en gitt liste til en matrise, finner indeksene til den gitte verdien i matrisen, og konverterer den resulterende numpy array tilbake til en liste. Til slutt skriver den ut listen over indekser.

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))>

>

>

PRODUKSJON:

New indices list : [1, 3]>

Tidskompleksitet: O(n), hvor n er lengden på inndatalisten.
Ekstra plass: O(n), fordi den oppretter en ny numpy-array med samme lengde som inndatalisten.

Finn indeksen til et element ved å bruke en for-løkke

Initialiser en tom liste kalt res_list for å lagre indeksene til målverdiene. Iterér gjennom hvert element i inndatalisten test_list ved å bruke en for-løkke. Hvis det gjeldende elementet samsvarer med målverdien, legg til indeksen til res_listen. Etter at løkken er fullført , returner res_listen som utdata.

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))>

>

>

Produksjon

Original list: [1, 3, 4, 3, 6, 7] New indices list: [1, 3]>

Tidskompleksitet: O(n) , hvor n er lengden på inndatalisten test_list.
Hjelpeplass: O(k) , hvor k er antall forekomster av målverdien.

Finn indeksen til et element ved å bruke list.index()-metoden med en while-løkke

Initialiser en tom listeindekser for å lagre indeksene til den gitte verdien.Initialiser en variabel i til -1.Kjør en while-løkke som fortsetter til break-setningen påtreffes. Inne i while-løkken, bruk list.index() metode for å finne indeksen for den gitte verdien i listen fra indeks i + 1. Hvis indeksen blir funnet, legg den til indekslisten og oppdater verdien av i til indeksen som ble funnet. Hvis indeksen ikke blir funnet, bryt while-løkken. Skriv ut indekslisten.

Python3




i java
# 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))>

>

>

Produksjon

Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>

Tidskompleksitet: O(n), List.index()-metoden har en tidskompleksitet på O(n) i verste fall fordi den må iterere gjennom listen for å finne indeksen til den gitte verdien. While-løkken har også en tidskompleksitet av O(n) i verste fall fordi den må iterere gjennom listen for å finne alle forekomster av den gitte verdien.
Hjelpeplass: O(1),Plasset som brukes av indekslisten og i-variabelen er konstant og avhenger ikke av størrelsen på inndatalisten, så kompleksiteten av hjelperommet er O(1).