logo

Itera su un elenco in Python

IL Elenco è equivalente agli array in altri linguaggi, con l'ulteriore vantaggio di avere dimensioni dinamiche.

In Pitone , l'elenco è un tipo di contenitore in Strutture dati, utilizzato per archiviare più dati contemporaneamente. A differenza di Imposta , le liste in Python sono ordinate e hanno un conteggio definito. In questo articolo, vedremo come scorrere un elenco in Python e anche Python scorrere un elenco di stringhe.



Python scorre su una lista

Vediamo tutti i diversi modi di scorrere un elenco in Python e il confronto delle prestazioni tra loro.

Itera su un elenco utilizzando il ciclo For

Possiamo scorrere un elenco in Python utilizzando un semplice Per ciclo .

Python3








# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # Using for loop> for> i>in> list>:> >print>(i)>

>

>

Produzione

1 3 5 7 9>

Complessità temporale: O(n) – dove n è il numero di elementi nell'elenco.
Spazio ausiliario: O(1) – poiché non stiamo utilizzando spazio aggiuntivo.

Scorrere un elenco utilizzando f o loop e range()

Nel caso in cui desideriamo utilizzare il tradizionale ciclo for che scorre dal numero x al numero y.

Python3




# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # getting length of list> length>=> len>(>list>)> > # Iterating the index> # same as 'for i in range(len(list))'> for> i>in> range>(length):> >print>(>list>[i])>

>

>

Produzione

1 3 5 7 9>

Complessità temporale: O(n), dove n è la lunghezza dell'elenco di input.
Spazio ausiliario: O(1), che è spazio costante

Scorrere un elenco in Python utilizzando un ciclo while

Possiamo anche scorrere un elenco Python utilizzando a ciclo while .

Python3




# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # Getting length of list> i>=> 0> > # Iterating using while loop> while> i <>len>(>list>):> >print>(>list>[i])> >i>+>=> 1>

>

>

Produzione

1 3 5 7 9>

Complessità temporale: O(n) dove n è la lunghezza della lista.
Spazio ausiliario: O(1) poiché solo una quantità costante di spazio aggiuntivo viene utilizzata per le variabili i e lunghezza.

Scorrere un elenco utilizzando comprensione delle liste

Possiamo usare comprensione delle liste (forse il modo più concreto) per scorrere un elenco in Python.

Python3




# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # Using list comprehension> [>print>(i)>for> i>in> list>]>

>

>

Produzione

1 3 5 7 9>

Scorrere un elenco in Python utilizzando enumerate()

Se vogliamo convertire la lista in una lista iterabile di tuple (o ottenere l'indice in base a un controllo di condizione, ad esempio nella ricerca lineare, potrebbe essere necessario salvare l'indice dell'elemento minimo), puoi usare la funzione funzione enumera() .

Python3




# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # Using enumerate()> for> i, val>in> enumerate>(>list>):> >print> (i,>','>,val)>

>

git pull origin master

>

Produzione

0 , 1 1 , 3 2 , 5 3 , 7 4 , 9>

Nota: Anche il metodo 2 può essere utilizzato per trovare l'indice, ma il metodo 1 no (a meno che una variabile aggiuntiva non venga incrementata ad ogni iterazione) e il metodo 5 fornisce una rappresentazione concisa di questa indicizzazione.

Scorrere un elenco in Python utilizzando la funzione iter e la funzione successiva

Ecco un approccio aggiuntivo che utilizza la funzione iter e la funzione successiva:

Python3




# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> # Create an iterator object using the iter function> iterator>=> iter>(>list>)> # Use the next function to retrieve the elements of the iterator> try>:> >while> True>:> >element>=> next>(iterator)> >print>(element)> except> StopIteration:> >pass>

>

>

Produzione

1 3 5 7 9>

Complessità temporale: SU)
Spazio ausiliario: O(1)

Itera su un elenco in Python utilizzando la funzione map()

Usa il carta geografica() funzione per applicare una funzione a ciascun elemento di una lista.

Python3




# Define a function to print each element> def> print_element(element):> >print>(element)> # Create a list> my_list>=> [>1>,>3>,>5>,>7>,>9>]> # Use map() to apply the print_element() function to each element of the list> result>=> map>(print_element, my_list)> # Since map() returns an iterator, we need to consume> # the iterator in order to see the output> for> _>in> result:> >pass>

>

>

Produzione

1 3 5 7 9>

Complessità temporale: O(n), dove n è la lunghezza dell'elenco.
Spazio ausiliario: O(1)

Python esegue l'iterazione su più elenchi utilizzando la funzione zip()

In questo esempio, la funzione zip() viene utilizzata per scorrere contemporaneamente gli elementi di due liste, lista1 e lista2, accoppiando insieme gli elementi corrispondenti in tuple per la successiva stampa.

Python3




list1>=> [>1>,>2>,>3>]> list2>=> [>'p'>,>'q'>,>'r'>]> # Using zip() to iterate over multiple lists simultaneously> for> i1, i2>in> zip>(list1, list2):> >print>(f>'{i1} ->{i2}'>)>

>

>

Produzione

1 ->p2 -> q3 -> r>

Itera su un elenco in Python usando NumPy

Per elenchi n-dimensionali molto grandi (ad esempio un array di immagini), a volte è meglio utilizzare una libreria esterna come insensato . Possiamo usare np. enumerate() per imitare il comportamento dell'enumerazione. La potenza extra di NumPy deriva dal fatto che possiamo persino controllare il modo in cui visitare gli elementi (ordine Fortran anziché ordine C, diciamo :)) ma l'unico avvertimento è che np.nditer tratta l'array come di sola lettura da default, quindi è necessario passare flag aggiuntivi come op_flags=['readwrite'] per poter modificare gli elementi.

Python3




import> numpy as geek> # creating an array using> # arrange method> a>=> geek.arange(>9>)> # shape array with 3 rows> # and 4 columns> a>=> a.reshape(>3>,>3>)> # iterating an array> for> x>in> geek.nditer(a):> >print>(x)>

>

>

Produzione:

0 1 2 3 4 5 6 7 8>

Complessità temporale: SU)
Spazio ausiliario: O(1)