Iterujte zoznam v Pythone
The Zoznam je ekvivalentný poliam v iných jazykoch s ďalšou výhodou dynamickej veľkosti.
In Python , zoznam je typ kontajnera v Data Structures, ktorý sa používa na ukladanie viacerých údajov súčasne. Na rozdiel od Súpravy , zoznamy v Pythone sú usporiadané a majú určitý počet. V tomto článku uvidíme, ako iterovať cez zoznam v Pythone a tiež prechádzať zoznamom reťazcov v Pythone.
Iterácia Pythonu cez zoznam
Pozrime sa na všetky rôzne spôsoby iterácie zoznamu v Pythone a na porovnanie výkonu medzi nimi.
- Použitím pre slučku
- Pomocou slučky for a rozsah()
- Pomocou a pričom slučka
- Použitím porozumenie zoznamu
- Použitím enumerate() metóda
- Pomocou funkcia iter a ďalšia funkcia
- Pomocou funkcia map().
- Použitie funkcie zip().
- Použitím NumPy modul
Iterujte zoznam pomocou cyklu For
Zoznam v Pythone môžeme iterovať pomocou jednoduchého Pre slučku .
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using for loop> for> i> in> list> :> > print> (i)> |
Výkon
1 3 5 7 9
Časová zložitosť: O(n) – kde n je počet prvkov v zozname.
Pomocný priestor: O(1) – keďže nevyužívame žiadny ďalší priestor.
Iterujte zoznam pomocou f alebo cyklus a rozsah ()
V prípade, že chceme použiť tradičný cyklus for, ktorý iteruje z čísla x na číslo 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])> |
Výkon
1 3 5 7 9
Časová zložitosť: O(n), kde n je dĺžka zoznamu vstupov.
Pomocný priestor: O(1), čo je konštantný priestor
Iterujte cez zoznam v Pythone pomocou chvíľková slučka
Môžeme tiež iterovať zoznam Python pomocou a pričom slučka .
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> |
Výkon
1 3 5 7 9
Časová zložitosť: O(n) kde n je dĺžka zoznamu.
Pomocný priestor: O(1), pretože pre premenné i a dĺžka sa používa iba konštantné množstvo priestoru navyše.
Iterujte zoznam pomocou porozumenie zoznamu
Môžeme použiť porozumenie zoznamu (možno najkonkrétnejší spôsob), ako iterovať zoznam v Pythone.
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using list comprehension> [> print> (i)> for> i> in> list> ]> |
Výkon
1 3 5 7 9
Iterácia cez zoznam v Pythone pomocou enumerate()
Ak chceme zoznam previesť na iterovateľný zoznam n-tic (alebo získať index na základe kontroly stavu, napríklad pri lineárnom vyhľadávaní možno budete musieť uložiť index minimálneho prvku), môžete použiť funkciu 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)> |
Výkon
0 , 1 1 , 3 2 , 5 3 , 7 4 , 9
Poznámka: Dokonca aj metóda 2 sa dá použiť na nájdenie indexu, ale metóda 1 nie (pokiaľ sa pri každej iterácii nezvyšuje ďalšia premenná) a metóda 5 poskytuje stručnú reprezentáciu tohto indexovania.
Iterujte cez zoznam v Pythone pomocou funkcie iter a nasledujúcej funkcie
Tu je ďalší prístup pomocou funkcie iter a nasledujúcej funkcie:
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> |
Výkon
1 3 5 7 9
Časová zložitosť: O(n)
Pomocný priestor: O(1)
Iterujte zoznam v Pythone pomocou funkcie map().
Použi mapa() funkciu použiť funkciu na každý prvok zoznamu.
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> |
Výkon
1 3 5 7 9
Časová zložitosť: O(n), kde n je dĺžka zoznamu.
Pomocný priestor: O(1)
Iterácia Pythonu cez viacero zoznamov pomocou funkcie zip().
V tomto príklade je funkcia zip() použitá na súčasné iterovanie prvkov z dvoch zoznamov, zoznam1 a zoznam2, pričom sa zodpovedajúce prvky spárujú do n-tíc na následnú tlač.
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}'> )> |
Výkon
1 ->p2 -> q3 -> r
Iterujte zoznam v Pythone pomocou NumPy
Pre veľmi veľké n-rozmerné zoznamy (napríklad pole obrázkov) je niekedy lepšie použiť externú knižnicu ako napr nemotorný . Môžeme použiť np. enumerate() na napodobnenie správania enumerácie. Dodatočná sila NumPy pochádza zo skutočnosti, že môžeme dokonca kontrolovať spôsob návštevy prvkov (napríklad poradie Fortran namiesto poradia C :)), ale jedinou výhradou je, že np.nditer považuje pole za iba na čítanie. predvolené, takže na to, aby bolo možné upravovať prvky, musíte zadať ďalšie príznaky, ako napríklad op_flags=['readwrite'].
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)> |
Výkon:
0 1 2 3 4 5 6 7 8
Časová zložitosť: O(n)
Pomocný priestor: O(1)