Paprastai mums reikia rasti indeksą, kuriame yra konkreti reikšmė. Yra daug metodų, kaip tai pasiekti, naudojant index() ir tt. Tačiau kartais reikia rasti visus konkrečios reikšmės indeksus, jei sąraše yra keli atvejai. Aptarkime tam tikrus būdus, kaip rasti vertės indeksus pateiktame sąraše Python .
Būdai, kaip sąraše rasti vertės indeksus
Žemiau pateikiami metodai, kuriuos aptarsime šiame straipsnyje:
- Naiviojo metodo naudojimas
- Naudojant Sąrašo supratimas
- Naudojant Enumerate() Funkcija
- Naudojant filtro () funkcija
- Naudojant Numpy biblioteka
- Naudojant a už Loop
- Naudojant list.index() Metodas su o kilpa
Raskite elemento indeksą naudodami naivų metodą
Šią užduotį galime pasiekti kartodami sąrašą ir patikrinę tą reikšmę, tiesiog pridėdami vertės indeksą į naują sąrašą ir išspausdindami jį. Tai yra pagrindinis brutalios jėgos metodas šiai užduočiai atlikti.
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))> |
>
>Išvestis
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
sql sąlygos
Raskite elemento indeksą naudodami sąrašo supratimą
Sąrašo supratimas yra tik stenografinė technika, skirta atlikti brutalios jėgos užduotį, tiesiog naudoja mažesnes kodų eilutes, kad pasiektų užduotį, taigi taupo programuotojų laiką.
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))> |
>
>Išvestis
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
Raskite elemento indeksą naudodami Enumerate () F uncija
Naudojant išvardinti () galime pasiekti panašią užduotį, tai yra šiek tiek greitesnė technika nei aukščiau, todėl ją rekomenduojama naudoti virš sąrašo supratimo technikos.
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))> |
>
>Išvestis
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
Raskite elemento indeksą naudodami filtrą () F uncija
Tai dar vienas metodas, kuris gali būti naudojamas šiai konkrečiai užduočiai atlikti, filtras() paprastai gali atlikti filtravimo užduotis, todėl gali būti naudojamas šioje situacijoje šiai užduočiai atlikti.
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))> |
>
>Išvestis
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
Raskite elemento rodyklę naudodami numpytą biblioteką
Ši programa naudoja niūri biblioteka konvertuoti pateiktą sąrašą į masyvą, masyve suranda nurodytos reikšmės indeksus ir konvertuoja gautą nelygus masyvas atgal į sąrašą. Galiausiai jis išspausdina indeksų sąrašą.
Python3
kiek miestų yra Jungtinėse Amerikos Valstijose
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))> |
>
>
IŠVESTIS:
New indices list : [1, 3]>
Laiko sudėtingumas: O(n), kur n yra įvesties sąrašo ilgis.
Pagalbinė erdvė: O(n), nes sukuriamas naujas neryškus masyvas, kurio ilgis toks pat kaip įvesties sąrašas.
Raskite elemento indeksą naudodami for Loop
Inicijuokite tuščią sąrašą, vadinamą res_list, kad išsaugotumėte tikslinių reikšmių indeksus.Pakartokite kiekvieną elementą įvesties sąraše test_list naudodami for kilpą.Jei dabartinis elementas atitinka tikslinę reikšmę, pridėkite jo indeksą prie res_list.Kai ciklas bus baigtas , grąžinkite res_list kaip išvestį.
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))> |
>
>Išvestis
Original list: [1, 3, 4, 3, 6, 7] New indices list: [1, 3]>
Laiko sudėtingumas: O(n) , kur n yra įvesties sąrašo test_list ilgis.
Pagalbinė erdvė: O(k) , kur k yra tikslinės reikšmės atvejų skaičius.
Raskite elemento indeksą naudodami list.index() metodą su while Loop
Inicijuokite tuščią sąrašo indeksus, kad išsaugotumėte nurodytos reikšmės indeksus.Inicijuokite kintamąjį i į -1.Vykdykite ciklą, kuris tęsiasi tol, kol aptinkamas pertraukos sakinys. Cikloje while naudokite list.index() būdas rasti nurodytos reikšmės indeksą sąraše, pradedant nuo indekso i + 1.Jei indeksas rastas, pridėkite jį prie indeksų sąrašo ir atnaujinkite i reikšmę į rastą indeksą.Jei indeksas nerastas, pertraukite the while kilpa.Atspausdinkite indeksų sąrašą.
Python3
Sridevi
# 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))> |
>
>Išvestis
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Laiko sudėtingumas: O(n), Metodo list.index() laiko sudėtingumas blogiausiu atveju yra O(n), nes norint rasti nurodytos reikšmės indeksą, reikia kartoti sąrašą. Nors ciklas taip pat turi laiko sudėtingumą O(n) blogiausiu atveju, nes reikia kartoti sąrašą, kad surastų visus nurodytos reikšmės atvejus.
Pagalbinė erdvė: O(1), Indeksų sąrašo ir i kintamojo naudojama erdvė yra pastovi ir nepriklauso nuo įvesties sąrašo dydžio, todėl pagalbinės erdvės sudėtingumas yra O(1).