Iterer over en liste i Python
De Liste tilsvarer arrays på andre språk, med den ekstra fordelen av å være dynamisk i størrelse.
I Python , er listen en type container i Data Structures, som brukes til å lagre flere data samtidig. I motsetning til Settene , lister i Python er ordnet og har et bestemt antall. I denne artikkelen vil vi se hvordan du itererer over en liste i Python og også Python går gjennom listen over strenger.
Python Iterer over en liste
La oss se alle de forskjellige måtene å iterere over en liste i Python og ytelsessammenligningen mellom dem.
- Ved hjelp av for løkke
- Bruker for loop og område()
- Bruker en mens loop
- Ved hjelp av listeforståelse
- Ved hjelp av enumerate() metode
- Bruker iter funksjon og neste funksjon
- Bruker map() funksjon
- Bruker zip()-funksjonen
- Ved hjelp av NumPy modul
Iterer over en liste med For loop
Vi kan iterere over en liste i Python ved å bruke en enkel For loop .
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using for loop> for> i> in> list> :> > print> (i)> |
Produksjon
1 3 5 7 9
Tidskompleksitet: O(n) – hvor n er antall elementer i listen.
Ekstra plass: O(1) – da vi ikke bruker noe ekstra plass.
Iterer gjennom en liste med f eller loop og range()
I tilfelle vi ønsker å bruke den tradisjonelle for-løkken som itererer fra nummer x til nummer 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])> |
Produksjon
1 3 5 7 9
Tidskompleksitet: O(n), hvor n er lengden på inndatalisten.
Ekstra plass: O(1), som er konstant rom
Iterer gjennom en liste i Python ved å bruke en while-løkke
Vi kan også iterere over en Python-liste ved å bruke en mens loop .
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> |
Produksjon
1 3 5 7 9
Tidskompleksitet: O(n) hvor n er lengden på listen.
Ekstra plass: O(1) da kun en konstant mengde ekstra plass brukes for variablene i og lengde.
Iterer gjennom en liste ved hjelp av listeforståelse
Vi kan bruke listeforståelse (muligens den mest konkrete måten) å iterere over en liste i Python.
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using list comprehension> [> print> (i)> for> i> in> list> ]> |
Produksjon
1 3 5 7 9
Iterer gjennom en liste i Python ved å bruke enumerate()
Hvis vi ønsker å konvertere listen til en itererbar liste over tupler (eller få indeksen basert på en tilstandssjekk, for eksempel i lineært søk, kan det hende du må lagre indeksen for minimumselementet), kan du bruke enumerate() funksjon .
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)> |
Produksjon
0 , 1 1 , 3 2 , 5 3 , 7 4 , 9
Merk: Selv metode 2 kan brukes til å finne indeksen, men metode 1 kan ikke (med mindre en ekstra variabel økes hver iterasjon) og metode 5 gir en kortfattet representasjon av denne indekseringen.
Iterer gjennom en liste i Python ved å bruke iter-funksjonen og neste funksjon
Her er en ekstra tilnærming som bruker iter-funksjonen og den neste funksjonen:
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> |
Produksjon
1 3 5 7 9
Tidskompleksitet: På)
Ekstra plass: O(1)
Iterer over en liste i Python ved å bruke map()-funksjonen
Bruke kart() funksjon for å bruke en funksjon på hvert element i en liste.
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> |
Produksjon
1 3 5 7 9
Tidskompleksitet: O(n), hvor n er lengden på listen.
Ekstra plass: O(1)
Python Iterer over flere lister ved å bruke zip()-funksjonen
I dette eksemplet brukes zip()-funksjonen til samtidig å iterere over elementer fra to lister, list1 og list2, og pare tilsvarende elementer sammen i tupler for påfølgende utskrift.
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}'> )> |
Produksjon
1 ->p 2 -> q 3 -> r
Iterer over en liste i Python ved å bruke NumPy
For veldig store n-dimensjonale lister (for eksempel en bildematrise) er det noen ganger bedre å bruke et eksternt bibliotek som f.eks. nusset . Vi kan bruke np. enumerate() for å etterligne oppførselen til enumerering. Den ekstra kraften til NumPy kommer fra det faktum at vi til og med kan kontrollere måten å besøke elementene på (Fortran-rekkefølge i stedet for C-ordre, si :)), men det eneste forbeholdet er at np.nditer behandler arrayen som skrivebeskyttet av standard, så man må sende ekstra flagg som op_flags=['readwrite'] for at den skal kunne endre elementer.
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)> |
Produksjon:
0 1 2 3 4 5 6 7 8
Tidskompleksitet: På)
Ekstra plass: O(1)