Gentag over en liste i Python

Det Liste svarer til arrays på andre sprog, med den ekstra fordel at være dynamisk i størrelse.

I Python , er listen en type container i Data Structures, som bruges til at gemme flere data på samme tid. I modsætning til Sæt , lister i Python er ordnet og har et bestemt antal. I denne artikel vil vi se, hvordan man itererer over en liste i Python og også Python loop gennem listen over strenge.

Python iterer over en liste

Lad os se alle de forskellige måder at iterere over en liste i Python og præstationssammenligningen mellem dem.

Gentag over en liste ved hjælp af For loop

Vi kan iterere over en liste i Python ved at bruge en simpel Til sløjfe .

Python3




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

Produktion

1 3 5 7 9 

Tidskompleksitet: O(n) – hvor n er antallet af elementer på listen.
Hjælpeplads: O(1) – da vi ikke bruger ekstra plads.

Gentag en liste med f eller loop og range()

I tilfælde af at vi ønsker at bruge den traditionelle for-løkke, 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])>

Produktion

1 3 5 7 9 

Tidskompleksitet: O(n), hvor n er længden af ​​inputlisten.
Hjælpeplads: O(1), som er konstant rum

Gentag gennem en liste i Python vha en while-løkke

Vi kan også iterere over en Python-liste ved hjælp af 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>

Produktion

1 3 5 7 9 

Tidskompleksitet: O(n) hvor n er længden af ​​listen.
Hjælpeplads: O(1), da kun en konstant mængde ekstra plads bruges til variable i og længde.

Gentag en liste ved hjælp af listeforståelse

Vi kan bruge listeforståelse (muligvis den mest konkrete måde) at 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> ]>

Produktion

1 3 5 7 9 

Gentag gennem en liste i Python ved hjælp af enumerate()

Hvis vi ønsker at konvertere listen til en iterabel liste over tupler (eller få indekset baseret på en tilstandskontrol, for eksempel i lineær søgning, skal du muligvis gemme indekset for minimumselementet), kan du bruge enumerate() funktion .

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)>

Produktion

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

Bemærk: Selv metode 2 kan bruges til at finde indekset, men metode 1 kan ikke (medmindre en ekstra variabel inkrementeres hver iteration), og metode 5 giver en kortfattet repræsentation af denne indeksering.

Gentag gennem en liste i Python ved hjælp af iter-funktionen og den næste funktion

Her er en yderligere tilgang ved hjælp af iter-funktionen og den næste funktion:

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>

Produktion

1 3 5 7 9 

Tidskompleksitet: På)
Hjælpeplads: O(1)

Gentag over en liste i Python ved hjælp af map()-funktionen

Brug kort() funktion for at anvende en funktion til 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>

Produktion

1 3 5 7 9 

Tidskompleksitet: O(n), hvor n er længden af ​​listen.
Hjælpeplads: O(1)

Python Iterer over flere lister ved hjælp af zip()-funktionen

I dette eksempel bruges zip()-funktionen til sideløbende at iterere over elementer fra to lister, list1 og list2, og parre tilsvarende elementer sammen i tuples til efterfølgende udskrivning.

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}'> )>

Produktion

1 ->p 2 -> q 3 -> r 

Gentag over en liste i Python ved hjælp af NumPy

For meget store n-dimensionelle lister (f.eks. et billedarray) er det nogle gange bedre at bruge et eksternt bibliotek som f.eks. nusset . Vi kan bruge np. enumerate() for at efterligne adfærden ved optælling. Den ekstra kraft ved NumPy kommer fra det faktum, at vi endda kan kontrollere måden at besøge elementerne på (Fortran-rækkefølge snarere end C-rækkefølge, for eksempel :)), men den ene advarsel er, at np.nditer behandler arrayet som skrivebeskyttet ved at standard, så man skal sende ekstra flag såsom op_flags=['readwrite'] for at det kan ændre 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)>

Produktion:

0 1 2 3 4 5 6 7 8 

Tidskompleksitet: På)
Hjælpeplads: O(1)