El Llista és equivalent a les matrius en altres idiomes, amb l'avantatge addicional de ser dinàmics en mida.
En Python , la llista és un tipus de contenidor a Data Structures, que s'utilitza per emmagatzemar diverses dades alhora. A diferència Col · leccions , les llistes en Python estan ordenades i tenen un recompte definit. En aquest article, veurem com iterar sobre una llista en Python i també Python recorre una llista de cadenes.
Python itera sobre una llista
Vegem totes les maneres diferents d'iterar una llista a Python i la comparació de rendiment entre elles.
- Utilitzant per bucle
- S'utilitza for bucle i rang ()
- Utilitzant a bucle while
- Utilitzant comprensió de llista
- Utilitzant enumerar() mètode
- Utilitzant el funció iter i la següent funció
- Utilitzant el funció map().
- Utilitzant la funció zip().
- Utilitzant NumPy mòdul
Itera per una llista utilitzant el bucle For
Podem iterar sobre una llista en Python utilitzant un senzill Per bucle .
Python 3
# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # Using for loop> for> i>in> list>:> >print>(i)> |
>
>Sortida
1 3 5 7 9>
Complexitat temporal: O(n) – on n és el nombre d'elements de la llista.
Espai auxiliar: O(1) – ja que no estem utilitzant cap espai addicional.
Recorre una llista amb f o bucle i rang ()
En cas que volem utilitzar el bucle for tradicional que itera del nombre x al número y.
Python 3
# 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])> |
>
>Sortida
1 3 5 7 9>
Complexitat temporal: O(n), on n és la longitud de la llista d'entrada.
Espai auxiliar: O(1), que és espai constant
Iterar a través d'una llista en Python utilitzant un bucle de temps
També podem iterar sobre una llista de Python utilitzant a bucle while .
Python 3
# 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> |
>
>Sortida
1 3 5 7 9>
Complexitat temporal: O(n) on n és la longitud de la llista.
Espai auxiliar: O(1) ja que només s'utilitza una quantitat constant d'espai addicional per a les variables i i longitud.
Recorre una llista utilitzant comprensió de llista
Podem utilitzar comprensió de llista (possiblement la manera més concreta) d'iterar sobre una llista en Python.
Python 3
# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # Using list comprehension> [>print>(i)>for> i>in> list>]> |
>
>Sortida
1 3 5 7 9>
Itera per una llista en Python utilitzant enumerate()
Si volem convertir la llista en una llista iterable de tuples (o obtenir l'índex basat en una comprovació de condicions, per exemple en la cerca lineal, potser haureu de desar l'índex de l'element mínim), podeu utilitzar el funció enumerate(). .
Python 3
# Python3 code to iterate over a list> list> => [>1>,>3>,>5>,>7>,>9>]> > # Using enumerate()> for> i, val>in> enumerate>(>list>):> >print> (i,>','>,val)> |
>
disseny singleton
>Sortida
0 , 1 1 , 3 2 , 5 3 , 7 4 , 9>
Nota: Fins i tot el mètode 2 es pot utilitzar per trobar l'índex, però el mètode 1 no (tret que s'incrementi una variable addicional cada iteració) i el mètode 5 ofereix una representació concisa d'aquesta indexació.
Itera per una llista en Python utilitzant la funció iter i la funció següent
Aquí hi ha un enfocament addicional que utilitza la funció iter i la funció següent:
Python 3
# 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> |
>
>Sortida
1 3 5 7 9>
Complexitat temporal: O(n)
Espai auxiliar: O(1)
Itereu sobre una llista en Python utilitzant la funció map().
Utilitzar el mapa () funció per aplicar una funció a cada element d'una llista.
Python 3
# 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> |
>
>Sortida
1 3 5 7 9>
Complexitat temporal: O(n), on n és la longitud de la llista.
Espai auxiliar: O(1)
Python itera sobre diverses llistes utilitzant la funció zip().
En aquest exemple, la funció zip() s'utilitza per iterar simultàniament sobre elements de dues llistes, llista1 i llista2, emparellant els elements corresponents en tuples per a la impressió posterior.
Python 3
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}'>)> |
>
>Sortida
1 ->p 2 -> q 3 -> r>>
Itera sobre una llista a Python utilitzant NumPy
Per a llistes n-dimensionals molt grans (per exemple, una matriu d'imatges), de vegades és millor utilitzar una biblioteca externa com ara numpy . Podem utilitzar np. enumerate() per imitar el comportament de l'enumeració. El poder addicional de NumPy prové del fet que fins i tot podem controlar la manera de visitar els elements (ordre Fortran en lloc d'ordre C, per exemple :)), però l'única advertència és que el np.nditer tracta la matriu com a només de lectura per per defecte, per tant, cal passar senyals addicionals com op_flags=['readwrite'] perquè pugui modificar elements.
Python 3
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)> |
>
>
Sortida:
0 1 2 3 4 5 6 7 8>
Complexitat temporal: O(n)
Espai auxiliar: O(1)