Iterujte seznam v Pythonu
The Seznam je ekvivalentní polím v jiných jazycích, s další výhodou dynamické velikosti.
v Krajta , seznam je typ kontejneru v datových strukturách, který se používá k ukládání více dat současně. Na rozdíl od Sady , seznamy v Pythonu jsou seřazeny a mají určitý počet. V tomto článku uvidíme, jak iterovat přes seznam v Pythonu a také v Pythonu procházet seznam řetězců.
Iterace Pythonu přes seznam
Podívejme se na všechny různé způsoby iterace seznamu v Pythonu a na srovnání výkonu mezi nimi.
- Použitím pro smyčku
- Pomocí smyčky for a rozsah()
- Používat zatímco smyčka
- Použitím porozumění seznamu
- Použitím vyjmenovat() metoda
- Za použití funkce iter a další funkce
- Za použití funkce map().
- Použití funkce zip().
- Použitím NumPy modul
Iterujte seznam pomocí cyklu For
Můžeme iterovat seznam v Pythonu pomocí jednoduchého Pro smyč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ýstup
1 3 5 7 9
Časová složitost: O(n) – kde n je počet prvků v seznamu.
Pomocný prostor: O(1) – protože nepoužíváme žádný další prostor.
Iterujte seznam pomocí f nebo smyčka a rozsah()
V případě, že chceme použít tradiční cyklus for, který iteruje od čísla x k číslu 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ýstup
1 3 5 7 9
Časová složitost: O(n), kde n je délka seznamu vstupů.
Pomocný prostor: O(1), což je konstantní prostor
Iterujte seznam v Pythonu pomocí chvilková smyčka
Můžeme také iterovat seznam Pythonu pomocí a zatímco smyč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ýstup
1 3 5 7 9
Časová složitost: O(n) kde n je délka seznamu.
Pomocný prostor: O(1), protože pro proměnné i a délka se používá pouze konstantní množství prostoru navíc.
Iterujte seznam pomocí porozumění seznamu
Můžeme použít porozumění seznamu (možná nejkonkrétnější způsob), jak iterovat seznam 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> ]> |
Výstup
1 3 5 7 9
Iterujte seznam v Pythonu pomocí enumerate()
Pokud chceme seznam převést na iterovatelný seznam n-tic (nebo získat index na základě kontroly stavu, například při lineárním vyhledávání, možná budete muset uložit index minimálního prvku), můžete použít funkce 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ýstup
0 , 1 1 , 3 2 , 5 3 , 7 4 , 9
Poznámka: K nalezení indexu lze použít i metodu 2, ale metodu 1 nikoli (pokud se při každé iteraci nezvyšuje další proměnná) a metoda 5 poskytuje stručnou reprezentaci tohoto indexování.
Iterujte seznam v Pythonu pomocí funkce iter a další funkce
Zde je další přístup pomocí funkce iter a další funkce:
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ýstup
1 3 5 7 9
Časová složitost: Na)
Pomocný prostor: O(1)
Iterujte seznam v Pythonu pomocí funkce map().
Použijte mapa() funkce pro použití funkce na každý prvek seznamu.
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ýstup
1 3 5 7 9
Časová složitost: O(n), kde n je délka seznamu.
Pomocný prostor: O(1)
Iterace Pythonu přes více seznamů pomocí funkce zip().
V tomto příkladu je funkce zip() použita k současnému iterování prvků ze dvou seznamů, seznam1 a seznam2, párování odpovídajících prvků dohromady v nicích pro následný tisk.
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ýstup
1 ->p 2 -> q 3 -> r
Iterujte seznam v Pythonu pomocí NumPy
Pro velmi rozsáhlé n-rozměrné seznamy (například pole obrázků) je někdy lepší použít externí knihovnu jako např nemotorný . Můžeme použít np. enumerate() k napodobení chování výčtu. Další síla NumPy pochází ze skutečnosti, že můžeme dokonce ovládat způsob návštěvy prvků (Řád Fortran spíše než řád C, řekněme :)), ale jedinou výhradou je, že np.nditer zachází s polem pouze pro čtení výchozí, takže člověk musí předat další příznaky, jako je op_flags=['readwrite'], aby mohl upravovat prvky.
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ýstup:
0 1 2 3 4 5 6 7 8
Časová složitost: Na)
Pomocný prostor: O(1)