Iteracija po seznamu v Pythonu
The Seznam je enakovreden nizom v drugih jezikih, z dodatno prednostjo dinamične velikosti.
noter Python , je seznam vrsta vsebnika v podatkovnih strukturah, ki se uporablja za shranjevanje več podatkov hkrati. Za razliko od Kompleti , so seznami v Pythonu urejeni in imajo točno določeno število. V tem članku bomo videli, kako ponoviti seznam v Pythonu in kako se Python zanka skozi seznam nizov.
Python ponavlja čez seznam
Oglejmo si vse različne načine iteracije po seznamu v Pythonu in primerjavo zmogljivosti med njimi.
- Uporaba za zanko
- Uporaba zanke in obseg()
- Uporaba a medtem ko zanka
- Uporaba razumevanje seznama
- Uporaba naštej() metoda
- Uporabljati iter funkcijo in naslednjo funkcijo
- Uporabljati funkcija map().
- Uporaba funkcije zip().
- Uporaba NumPy modul
Iteracija po seznamu z uporabo zanke For
V Pythonu lahko ponavljamo seznam z uporabo preprostega Za zanko .
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using for loop> for> i> in> list> :> > print> (i)> |
Izhod
1 3 5 7 9
Časovna zahtevnost: O(n) – kjer je n število elementov na seznamu.
Pomožni prostor: O(1) – ker ne uporabljamo dodatnega prostora.
Iterirajte po seznamu z uporabo f ali zanka in obseg()
V primeru, da želimo uporabiti tradicionalno zanko for, ki ponavlja od števila x do števila 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])> |
Izhod
1 3 5 7 9
Časovna zahtevnost: O(n), kjer je n dolžina vhodnega seznama.
Pomožni prostor: O(1), ki je konstanten prostor
Iteracija skozi seznam v Pythonu z uporabo zanka medtem
Lahko tudi ponovimo seznam Python z uporabo medtem ko zanka .
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> |
Izhod
1 3 5 7 9
Časovna zahtevnost: O(n), kjer je n dolžina seznama.
Pomožni prostor: O(1), saj se za spremenljivki i in dolžina uporablja samo stalna količina dodatnega prostora.
Iterirajte po seznamu z uporabo razumevanje seznama
Lahko uporabimo razumevanje seznama (verjetno najbolj konkreten način) za ponavljanje seznama v Pythonu.
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using list comprehension> [> print> (i)> for> i> in> list> ]> |
Izhod
1 3 5 7 9
Iteracija skozi seznam v Pythonu z uporabo enumerate()
Če želimo pretvoriti seznam v ponovljiv seznam tulp (ali pridobiti indeks na podlagi preverjanja pogojev, na primer pri linearnem iskanju, boste morda morali shraniti indeks najmanjšega elementa), lahko uporabite funkcijo enumerate(). .
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)> |
Izhod
0 , 1 1 , 3 2 , 5 3 , 7 4 , 9
Opomba: Celo metodo 2 je mogoče uporabiti za iskanje indeksa, vendar metoda 1 ne more (razen če se pri vsaki ponovitvi poveča dodatna spremenljivka), metoda 5 pa daje jedrnato predstavitev tega indeksiranja.
Iteracija skozi seznam v Pythonu s funkcijo iter in funkcijo next
Tukaj je dodaten pristop z uporabo funkcije iter in naslednje funkcije:
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> |
Izhod
1 3 5 7 9
Časovna zahtevnost: O(n)
Pomožni prostor: O(1)
Iterirajte po seznamu v Pythonu s funkcijo map().
Uporabi zemljevid() funkcijo za uporabo funkcije za vsak element seznama.
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> |
Izhod
1 3 5 7 9
Časovna zahtevnost: O(n), kjer je n dolžina seznama.
Pomožni prostor: O(1)
Python ponavlja več seznamov z uporabo funkcije zip().
V tem primeru je funkcija zip() uporabljena za sočasno ponavljanje elementov z dveh seznamov, seznam1 in seznam2, pri čemer se ustrezni elementi združijo v tuple za kasnejše tiskanje.
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}'> )> |
Izhod
1 ->p 2 -> q 3 -> r>
Iteracija po seznamu v Pythonu z uporabo NumPy
Za zelo velike n-dimenzionalne sezname (na primer niz slik) je včasih bolje uporabiti zunanjo knjižnico, kot je numpy . Uporabimo lahko np. enumerate() za posnemanje vedenja naštevanja. Dodatna moč NumPy izhaja iz dejstva, da lahko celo nadziramo način obiska elementov (na primer vrstni red Fortran in ne vrstni red C :)), vendar je eno opozorilo, da np.nditer obravnava matriko kot samo za branje tako, da privzeto, zato je treba posredovati dodatne zastavice, kot je op_flags=['readwrite'], da lahko spreminja elemente.
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)> |
Izhod:
0 1 2 3 4 5 6 7 8
Časovna zahtevnost: O(n)
Pomožni prostor: O(1)