Normalt skal vi finde det indeks, hvori den bestemte værdi er placeret. Der er mange metoder til at opnå det ved at bruge index() osv. Men nogle gange kræver det at finde alle indekserne for en bestemt værdi, hvis den har flere forekomster på listen. Lad os diskutere visse måder at finde værdiindeks på den givne liste over Python .
Måder at finde værdiindeks på listen
Nedenfor er de metoder, vi vil dække i denne artikel:
- Bruger den naive metode
- Ved brug af Listeforståelse
- Ved brug af Enumerate() Funktion
- Ved brug af filter() Funktion
- Ved brug af Numpy bibliotek
- Ved hjælp af en for Loop
- Ved brug af list.index() Metode med en mens Loop
Find indekset for et element ved hjælp af den naive metode
Vi kan opnå denne opgave ved at gentage listen og tjekke for den værdi og blot tilføje værdiindekset i en ny liste og udskrive den. Dette er den grundlæggende brute force metode til at opnå denne opgave.
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))> |
>
>Produktion
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Tidskompleksitet: På)
Hjælpeplads: På)
np.hvor
Find indekset for et element ved hjælp af listeforståelse
Listeforståelse er blot stenografiteknikken til at opnå brute force-opgaven, bruger bare mindre linjer med koder for at opnå opgaven og sparer dermed programmører 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))> |
>
>Produktion
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Tidskompleksitet: På)
Hjælpeplads: På)
Find indekset for et element ved hjælp af Enumerate() F udskæring
Ved brug af opregne() vi kan opnå en lignende opgave, dette er en lidt hurtigere teknik end ovenstående og anbefales derfor at blive brugt 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))> |
>
>Produktion
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Tidskompleksitet: På)
Hjælpeplads: På)
Find indekset for et element ved hjælp af filter() F udskæring
Dette er endnu en metode, der kan bruges til at udføre denne særlige opgave, filter() er normalt i stand til at udføre filtreringsopgaverne og kan derfor også bruges i denne situation til at opnå denne opgave.
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))> |
>
smid java undtagelseshåndtering ind
>Produktion
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Tidskompleksitet: På)
Hjælpeplads: På)
Find indekset for et element ved hjælp af numpy Library
Dette program bruger numpy bibliotek at konvertere en given liste til en matrix, finder indeksene for den givne værdi i matrixen og konverterer den resulterende numpy array tilbage til en liste. Til sidst udskriver den 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))> |
>
>
PRODUKTION:
New indices list : [1, 3]>
Tidskompleksitet: O(n), hvor n er længden af inputlisten.
Hjælpeplads: O(n), fordi det opretter et nyt numpy-array med samme længde som inputlisten.
Find indekset for et element ved hjælp af en for-løkke
Initialiser en tom liste kaldet res_list for at gemme indekserne for målværdierne. Gentag gennem hvert element i inputlisten test_list ved hjælp af en for-løkke. Hvis det aktuelle element matcher målværdien, skal du tilføje dets indeks til res_listen. Når sløjfen er færdig , returner res_listen som output.
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))> |
>
>Produktion
Original list: [1, 3, 4, 3, 6, 7] New indices list: [1, 3]>
Tidskompleksitet: O(n) , hvor n er længden af inputlisten test_list.
Hjælpeplads: O(k) , hvor k er antallet af forekomster af målværdien.
Find indekset for et element ved hjælp af list.index()-metoden med en while-løkke
Initialiser en tom listeindekser for at gemme indekserne for den givne værdi.Initialiser en variabel i til -1.Kør en while-løkke, der fortsætter, indtil break-sætningen stødes på. Inde i while-løkken skal du bruge list.index() metode til at finde indekset for den givne værdi på listen startende fra indeks i + 1. Hvis indekset er fundet, skal du tilføje det til indekslisten og opdatere værdien af i til det fundne indeks. Hvis indekset ikke findes, skal du bryde while-løkken. Udskriv indekslisten.
Python3
til loop 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))> |
>
>Produktion
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 værste fald, fordi den skal iterere gennem listen for at finde indekset for den givne værdi. While-løkken har også en tidskompleksitet af O(n) i værste fald, fordi den skal iterere gennem listen for at finde alle forekomster af den givne værdi.
Hjælpeplads: O(1),Mellemrummet, der bruges af indekslisten og i variablen, er konstant og afhænger ikke af størrelsen på inputlisten, så kompleksiteten af hjælperummet er O(1).