logo

Python | Načini iskanja indeksov vrednosti na seznamu

Običajno zahtevamo, da poiščemo indeks, v katerem se določena vrednost nahaja. Obstaja veliko metod za dosego tega, z uporabo index() itd. Toda včasih je treba najti vse indekse določene vrednosti, če se na seznamu pojavi več. Pogovorimo se o nekaterih načinih iskanja indeksov vrednosti na danem seznamu Python .

Načini iskanja indeksov vrednosti na seznamu

Spodaj so metode, ki jih bomo obravnavali v tem članku:



Poiščite indeks predmeta z uporabo naivne metode

To nalogo lahko dosežemo s ponavljanjem po seznamu in preverjanjem te vrednosti ter dodajanjem indeksa vrednosti v nov seznam in to natisnemo. To je osnovna metoda surove sile za doseganje te naloge.

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

>

>

Izhod

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

Časovna zapletenost: O(n)
Pomožni prostor: O(n)

sonu nigam

Poiščite indeks elementa z razumevanjem seznama

Razumevanje seznama je samo skrajšana tehnika za dosego naloge z grobo silo, uporablja le manj vrstic kode za doseganje naloge in tako programerjem prihrani čas.

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

>

>

Izhod

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

Časovna zapletenost: O(n)
Pomožni prostor: O(n)

Poiščite indeks predmeta z uporabo Enumerate() F maziljenje

Uporaba naštej() lahko dosežemo podobno nalogo, to je nekoliko hitrejša tehnika od zgornje, zato jo priporočamo namesto tehnike razumevanja seznama.

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

>

>

Izhod

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

Časovna zapletenost: O(n)
Pomožni prostor: O(n)

Poiščite indeks predmeta z uporabo filter() F maziljenje

To je še ena metoda, ki jo je mogoče uporabiti za doseganje te posebne naloge, filter() je običajno sposoben opravljati naloge filtriranja in ga je zato mogoče uporabiti tudi v tej situaciji za doseganje te naloge.

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

>

>

Izhod

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

Časovna zapletenost: O(n)
Pomožni prostor: O(n)

Poiščite indeks predmeta z uporabo knjižnice numpy

Ta program uporablja knjižnica numpy da dani seznam pretvori v matriko, poišče indekse dane vrednosti v matriki in pretvori dobljeno niz numpy nazaj na seznam. Nazadnje natisne seznam indeksov.

Python3

abstraktni razred proti vmesniku




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

>

>

IZHOD:

New indices list : [1, 3]>

Časovna zahtevnost: O(n), kjer je n dolžina vhodnega seznama.
Pomožni prostor: O(n), ker ustvari novo matriko numpy z enako dolžino kot vhodni seznam.

Poiščite indeks elementa z uporabo zanke for

Inicializirajte prazen seznam, imenovan res_list, da shranite indekse ciljnih vrednosti. Iterirajte skozi vsak element na vhodnem seznamu test_list z uporabo zanke for. Če se trenutni element ujema s ciljno vrednostjo, dodajte njegov indeks res_listu. Ko je zanka končana vrne res_list kot izhod.

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

>

>

Izhod

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

Časovna zahtevnost: O(n) , kjer je n dolžina vhodnega seznama test_list.
Pomožni prostor: O(k) , kjer je k število pojavitev ciljne vrednosti.

Poiščite indeks predmeta z uporabo metode list.index() z zanko while

Inicializirajte indekse praznega seznama za shranjevanje indeksov dane vrednosti. Inicializirajte spremenljivko i na -1. Zaženite zanko while, ki se nadaljuje, dokler ne naletite na stavek break. Znotraj zanke while uporabite list.index() metoda za iskanje indeksa podane vrednosti na seznamu, ki se začne z indeksom i + 1. Če je indeks najden, ga pripnite na seznam indeksov in posodobite vrednost i na najdeni indeks. Če indeksa ne najdete, prekinite zanke while. Natisnite seznam indeksov.

Python3




verižni niz v Javi
# 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))>

>

>

Izhod

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

Časovna zapletenost: O(n), metoda list.index() ima v najslabšem primeru časovno zapletenost O(n), ker mora iterirati po seznamu, da najde indeks dane vrednosti. Zanka while ima tudi časovno zapletenost od O(n) v najslabšem primeru, ker mora iterirati po seznamu, da najde vse pojavitve dane vrednosti.
Pomožni prostor: O(1), prostor, ki ga uporabljata seznam indeksov in spremenljivka i, je konstanten in ni odvisen od velikosti vhodnega seznama, zato je kompleksnost pomožnega prostora O(1).