Meestal moeten we de index vinden waarin de specifieke waarde zich bevindt. Er zijn veel methoden om dat te bereiken, met behulp van index(), enz. Maar soms is het nodig om alle indices van een bepaalde waarde te vinden als deze meerdere keren voorkomt in de lijst. Laten we bepaalde manieren bespreken om waarde-indices te vinden in de gegeven lijst van Python .
Manieren om waarde-indexen in de lijst te vinden
Hieronder staan de methoden die we in dit artikel zullen behandelen:
- Met behulp van de naïeve methode
- Gebruik makend van Lijstbegrip
- Gebruik makend van Enumerate()-functie
- Gebruik makend van filter() Functie
- Gebruik makend van Numpy-bibliotheek
- Gebruik maken van een for loop
- Gebruik makend van list.index() Methode met een herhalingslus
Vind de index van een item met behulp van de naïeve methode
We kunnen deze taak volbrengen door de lijst te doorlopen en op die waarde te controleren en de waarde-index gewoon aan een nieuwe lijst toe te voegen en die af te drukken. Dit is de basismethode met brute kracht om deze taak te volbrengen.
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))> |
>
>Uitvoer
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Tijdcomplexiteit: Op)
Hulpruimte: Op)
git push-opdracht
Vind de index van een item met behulp van Lijstbegrip
Lijstbegrip is slechts de verkorte techniek om de brute force-taak te volbrengen, gebruikt slechts kleinere regels codes om de taak te volbrengen en bespaart daardoor tijd voor programmeurs.
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))> |
>
>Uitvoer
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Tijdcomplexiteit: Op)
Hulpruimte: Op)
Zoek de index van een item met Enumerate() F zalving
Gebruik makend van opsommen() we kunnen een soortgelijke taak uitvoeren, dit is een iets snellere techniek dan hierboven en wordt daarom aanbevolen om te gebruiken in plaats van de techniek voor het begrijpen van lijsten.
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))> |
>
>Uitvoer
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Tijdcomplexiteit: Op)
Hulpruimte: Op)
Zoek de index van een item met behulp van filter() F zalving
Dit is nog een andere methode die kan worden gebruikt om deze specifieke taak te volbrengen, filter() is doorgaans in staat de filtertaken uit te voeren en kan daarom in deze situatie ook worden gebruikt om deze taak te volbrengen.
Java Compareto-methode
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))> |
>
>Uitvoer
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Tijdcomplexiteit: Op)
Hulpruimte: Op)
Zoek de index van een item met behulp van de numpy-bibliotheek
Dit programma maakt gebruik van de numpige bibliotheek om een gegeven lijst naar een array te converteren, vindt de indices van de gegeven waarde in de array en converteert de resulterende numpy-array terug naar een lijst. Ten slotte drukt het de lijst met indices af.
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))> |
>
>
UITGANG:
New indices list : [1, 3]>
Tijdcomplexiteit: O(n), waarbij n de lengte van de invoerlijst is.
Hulpruimte: O(n), omdat er een nieuwe numpy-array wordt gemaakt met dezelfde lengte als de invoerlijst.
Zoek de index van een item met behulp van een for-lus
Initialiseer een lege lijst met de naam res_list om de indices van de doelwaarden op te slaan. Doorloop elk element in de invoerlijst test_list met behulp van een for-lus. Als het huidige element overeenkomt met de doelwaarde, voeg dan de index ervan toe aan de res_list. Nadat de lus is voltooid , retourneer de res_list als uitvoer.
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))> |
>
>Uitvoer
Original list: [1, 3, 4, 3, 6, 7] New indices list: [1, 3]>
Tijdcomplexiteit: O(n) , waarbij n de lengte is van de invoerlijst test_list.
Hulpruimte: O(k) , waarbij k het aantal keren is dat de doelwaarde voorkomt.
Zoek de index van een item met behulp van de list.index()-methode met een while-lus
Initialiseer een lege lijstindexen om de indices van de gegeven waarde op te slaan. Initialiseer een variabele i naar -1. Voer een while-lus uit die doorgaat totdat de break-instructie wordt aangetroffen. Gebruik binnen de while-lus de lijst.index() methode om de index van de gegeven waarde in de lijst te vinden, beginnend bij index i + 1. Als de index wordt gevonden, voeg deze dan toe aan de lijst met indexen en werk de waarde van i bij naar de gevonden index. Als de index niet wordt gevonden, verbreek dan de while-lus. Druk de indexenlijst af.
Python3
op 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))> |
>
>Uitvoer
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Tijdcomplexiteit: O(n), De methode list.index() heeft in het ergste geval een tijdscomplexiteit van O(n), omdat deze door de lijst moet doorlopen om de index van de gegeven waarde te vinden. De while-lus heeft ook een tijdscomplexiteit van O(n) in het ergste geval, omdat het de lijst moet doorlopen om alle exemplaren van de gegeven waarde te vinden.
Hulpruimte: O(1),De ruimte die wordt gebruikt door de indexenlijst en de i-variabele is constant en hangt niet af van de grootte van de invoerlijst, dus de complexiteit van de hulpruimte is O(1).