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:
- Bruker den naive metoden
- Ved hjelp av Listeforståelse
- Ved hjelp av Enumerate() funksjon
- Ved hjelp av filter() funksjon
- Ved hjelp av Numpy bibliotek
- Bruker en for Loop
- Ved hjelp av list.index() Metode med en mens Loop
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).