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:
- Uporaba naivne metode
- Uporaba Razumevanje seznama
- Uporaba Funkcija Enumerate().
- Uporaba funkcija filter().
- Uporaba Knjižnica Numpy
- Uporaba a za Loop
- Uporaba metoda list.index(). z medtem ko Loop
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).