Vanligtvis måste vi hitta indexet där det specifika värdet finns. Det finns många metoder för att uppnå det, med hjälp av index(), etc. Men kräver ibland att hitta alla index för ett visst värde om det har flera förekomster i listan. Låt oss diskutera vissa sätt att hitta värdeindex i den givna listan över Pytonorm .
Sätt att hitta värdeindex i listan
Nedan är metoderna som vi kommer att täcka i den här artikeln:
- Använder den naiva metoden
- Använder sig av Listförståelse
- Använder sig av Enumerate() Funktion
- Använder sig av filter() Funktion
- Använder sig av Numpy bibliotek
- Använder en för Loop
- Använder sig av list.index() Metod med en medan Loop
Hitta indexet för ett objekt med den naiva metoden
Vi kan uppnå denna uppgift genom att iterera genom listan och kontrollera efter det värdet och bara lägga till värdeindexet i en ny lista och skriva ut det. Detta är den grundläggande brute force-metoden för att uppnå denna uppgift.
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]>
Tidskomplexitet: På)
Hjälputrymme: På)
lista metoder java
Hitta indexet för ett objekt med hjälp av listförståelse
Listförståelse är bara stenografitekniken för att uppnå brute force-uppgiften, använder bara mindre rader med koder för att uppnå uppgiften och sparar därför programmerare 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]>
Tidskomplexitet: På)
Hjälputrymme: På)
Hitta indexet för ett objekt med hjälp av Enumerate() F smörjelse
Använder sig av räkna upp() vi kan uppnå en liknande uppgift, detta är en något snabbare teknik än ovan och rekommenderas därför att användas över listförståelsetekniken.
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]>
Tidskomplexitet: På)
Hjälputrymme: På)
Hitta indexet för ett objekt med filter() F smörjelse
Detta är ännu en metod som kan användas för att uppnå just denna uppgift, filtrera() vanligtvis kan utföra filtreringsuppgifterna och kan därför också användas i denna situation för att uppnå denna uppgift.
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))> |
>
>Produktion
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Tidskomplexitet: På)
Hjälputrymme: På)
Hitta indexet för ett objekt med hjälp av numpy Library
Detta program använder numpy bibliotek för att konvertera en given lista till en array, hittar indexen för det givna värdet i arrayen och konverterar den resulterande numpy array tillbaka till en lista. Slutligen skriver den ut listan med index.
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))> |
java list metoder
>
>
PRODUKTION:
New indices list : [1, 3]>
Tidskomplexitet: O(n), där n är längden på inmatningslistan.
Extra utrymme: O(n), eftersom det skapar en ny numpy-array med samma längd som inmatningslistan.
Hitta indexet för ett objekt med hjälp av en for-loop
Initiera en tom lista som heter res_list för att lagra indexen för målvärdena. Iterera genom varje element i indatalistan test_list med en for-loop. Om det aktuella elementet matchar målvärdet, lägg till dess index till res_listan. När slingan är klar , returnera res_list 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))> |
>
>Produktion
Original list: [1, 3, 4, 3, 6, 7] New indices list: [1, 3]>
Tidskomplexitet: O(n) , där n är längden på indatalistan test_list.
Hjälputrymme: O(k) där k är antalet förekomster av målvärdet.
Hitta indexet för ett objekt med list.index()-metoden med en while-loop
Initiera en tom lista index för att lagra indexen för det givna värdet. Initiera en variabel i till -1. Kör en while-loop som fortsätter tills break-satsen påträffas. Inuti while-loopen, använd list.index() metod för att hitta indexet för det givna värdet i listan med början från index i + 1. Om indexet hittas, lägg till det i indexlistan och uppdatera värdet för i till det hittade indexet. Om indexet inte hittas, bryt while-loopen.Skriv ut indexlistan.
Python3
java delsträng innehåller
# 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]>
Tidskomplexitet: O(n),metoden list.index() har en tidskomplexitet på O(n) i värsta fall eftersom den behöver iterera genom listan för att hitta indexet för det givna värdet. While-slingan har också en tidskomplexitet av O(n) i värsta fall eftersom den behöver iterera genom listan för att hitta alla förekomster av det givna värdet.
Hjälputrymme: O(1),Upprymmet som används av indexlistan och variabeln i är konstant och beror inte på storleken på inmatningslistan, så hjälputrymmets komplexitet är O(1).