Di solito, dobbiamo trovare l'indice in cui si trova il valore particolare. Esistono molti metodi per raggiungere questo obiettivo, utilizzando indice(), ecc. Ma a volte è necessario trovare tutti gli indici di un valore particolare nel caso in cui siano presenti più occorrenze nell'elenco. Parliamo di alcuni modi per trovare indici di valore nell'elenco fornito di Pitone .
Modi per trovare indici di valore nell'elenco
Di seguito sono riportati i metodi che tratteremo in questo articolo:
- Utilizzando il metodo ingenuo
- Utilizzando Comprensione delle liste
- Utilizzando Funzione Enumera()
- Utilizzando funzione filtro()
- Utilizzando Biblioteca Numpy
- Usare un per Ciclo
- Utilizzando Metodo list.index() con un mentre Ciclo
Trova l'indice di un articolo utilizzando il metodo Naive
Possiamo raggiungere questo obiettivo scorrendo l'elenco e controllando quel valore e semplicemente aggiungendo l'indice del valore in un nuovo elenco e stampandolo. Questo è il metodo base della forza bruta per raggiungere questo compito.
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))> |
>
>Produzione
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Complessità temporale: SU)
Spazio ausiliario: SU)
punto Java
Trova l'indice di un elemento utilizzando la comprensione dell'elenco
Comprensione degli elenchi è solo la tecnica abbreviata per portare a termine il compito di forza bruta, utilizza semplicemente meno righe di codice per portare a termine il compito e quindi fa risparmiare tempo ai programmatori.
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))> |
>
>Produzione
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Complessità temporale: SU)
Spazio ausiliario: SU)
Trova l'indice di un elemento utilizzando Enumerate() F unzione
Utilizzando enumerare() possiamo ottenere un compito simile, questa è una tecnica leggermente più veloce di quella sopra e quindi se ne consiglia l'uso rispetto alla tecnica di comprensione delle liste.
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))> |
>
Java contiene una sottostringa
>Produzione
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Complessità temporale: SU)
Spazio ausiliario: SU)
Trova l'indice di un articolo utilizzando filter() F unzione
Questo è ancora un altro metodo che può essere utilizzato per raggiungere questo particolare compito, filtro() solitamente è in grado di eseguire le attività di filtraggio e quindi può essere utilizzato anche in questa situazione per raggiungere questo compito.
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))> |
>
>Produzione
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Complessità temporale: SU)
Spazio ausiliario: SU)
Trova l'indice di un elemento utilizzando la libreria Numpy
Questo programma utilizza il biblioteca insensata per convertire una determinata lista in un array, trova gli indici del valore specificato nell'array e converte il risultato array numpy tornare a un elenco. Infine stampa l'elenco degli indici.
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))> |
>
>
PRODUZIONE:
New indices list : [1, 3]>
Complessità temporale: O(n), dove n è la lunghezza dell'elenco di input.
Spazio ausiliario: O(n), perché crea un nuovo array numpy con la stessa lunghezza dell'elenco di input.
Trova l'indice di un elemento utilizzando un ciclo for
Inizializza un elenco vuoto chiamato res_list per memorizzare gli indici dei valori di destinazione. Itera attraverso ogni elemento nell'elenco di input test_list utilizzando un ciclo for. Se l'elemento corrente corrisponde al valore di destinazione, aggiungi il suo indice a res_list. Al termine del ciclo , restituisce res_list come output.
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))> |
>
>Produzione
Original list: [1, 3, 4, 3, 6, 7] New indices list: [1, 3]>
Complessità temporale: O(n) , dove n è la lunghezza dell'elenco di input test_list.
Spazio ausiliario: O(k) , dove k è il numero di occorrenze del valore target.
Trova l'indice di un elemento utilizzando il metodo list.index() con un ciclo while
Inizializza un elenco vuoto di indici per memorizzare gli indici del valore specificato. Inizializza una variabile i su -1. Esegui un ciclo while che continua finché non viene incontrata l'istruzione break. All'interno del ciclo while, utilizza il comando lista.indice() metodo per trovare l'indice del valore specificato nell'elenco a partire dall'indice i + 1. Se l'indice viene trovato, aggiungilo all'elenco degli indici e aggiorna il valore di i all'indice trovato. Se l'indice non viene trovato, interrompi il ciclo while.Stampa l'elenco degli indici.
Python3
la sottostringa Java contiene
# 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))> |
>
>Produzione
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Complessità temporale: O(n), Il metodo list.index() ha una complessità temporale di O(n) nel caso peggiore perché deve scorrere l'elenco per trovare l'indice del valore specificato. Anche il ciclo while ha una complessità temporale di O(n) nel caso peggiore perché è necessario scorrere l'elenco per trovare tutte le occorrenze del valore specificato.
Spazio ausiliario: O(1),Lo spazio utilizzato dalla lista degli indici e dalla variabile i è costante e non dipende dalla dimensione della lista di input, quindi la complessità dello spazio ausiliario è O(1).