Iteruj po liście w Pythonie
The Lista jest odpowiednikiem tablic w innych językach, z dodatkową zaletą polegającą na dynamicznym rozmiarze.
W Pyton lista jest rodzajem kontenera w Data Structures, który służy do jednoczesnego przechowywania wielu danych. w odróżnieniu Zestawy , listy w Pythonie są uporządkowane i mają określoną liczbę. W tym artykule zobaczymy, jak iterować po liście w Pythonie, a także jak przeglądać listę ciągów znaków w Pythonie.
Python iteruje po liście
Przyjrzyjmy się różnym sposobom iteracji listy w Pythonie i porównajmy ich wydajność.
- Za pomocą dla pętli
- Używanie pętli for i zakres()
- Używać pętla while
- Za pomocą zrozumienie listy
- Za pomocą wyliczać() metoda
- Używając funkcja iter i następna funkcja
- Używając funkcja map().
- Korzystanie z funkcji zip().
- Za pomocą NumPy moduł
Iteruj po liście za pomocą pętli For
Możemy iterować po liście w Pythonie, używając prostego Dla pętli .
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using for loop> for> i> in> list> :> > print> (i)> |
Wyjście
1 3 5 7 9
Złożoność czasowa: O(n) – gdzie n jest liczbą elementów na liście.
Przestrzeń pomocnicza: O(1) – ponieważ nie wykorzystujemy dodatkowej przestrzeni.
Iteruj po liście za pomocą f lub pętla i zakres()
W przypadku, gdy chcemy użyć tradycyjnej pętli for, która iteruje od liczby x do liczby 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])> |
Wyjście
1 3 5 7 9
Złożoność czasowa: O(n), gdzie n jest długością listy wejściowej.
Przestrzeń pomocnicza: O(1), czyli przestrzeń stała
Iteruj po liście w Pythonie, używając pętla chwilowa
Możemy także iterować po liście Pythona, używając a pętla while .
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> |
Wyjście
1 3 5 7 9
Złożoność czasowa: O(n) gdzie n jest długością listy.
Przestrzeń pomocnicza: O(1), ponieważ dla zmiennych i i długości używana jest tylko stała ilość dodatkowej przestrzeni.
Iteruj po liście za pomocą zrozumienie listy
Możemy użyć zrozumienie listy (prawdopodobnie najbardziej konkretny sposób) iteracji po liście w Pythonie.
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using list comprehension> [> print> (i)> for> i> in> list> ]> |
Wyjście
1 3 5 7 9
Iteruj po liście w Pythonie, używając enumerate()
Jeśli chcemy przekonwertować listę na iterowalną listę krotek (lub uzyskać indeks na podstawie sprawdzenia warunku, na przykład w wyszukiwaniu liniowym może być konieczne zapisanie indeksu minimalnego elementu), możesz użyć metody wyliczyć(). .
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)> |
Wyjście
0 , 1 1 , 3 2 , 5 3 , 7 4 , 9
Notatka: Nawet metody 2 można użyć do znalezienia indeksu, ale metody 1 nie można (chyba że w każdej iteracji zwiększana jest dodatkowa zmienna), a metoda 5 daje zwięzłą reprezentację tego indeksowania.
Iteruj po liście w Pythonie, używając funkcji iter i funkcji next
Oto dodatkowe podejście wykorzystujące funkcję iter i następną funkcję:
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> |
Wyjście
1 3 5 7 9
Złożoność czasowa: NA)
Przestrzeń pomocnicza: O(1)
Iteruj po liście w Pythonie, używając funkcji map().
Użyj mapa() funkcja, aby zastosować funkcję do każdego elementu listy.
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> |
Wyjście
1 3 5 7 9
Złożoność czasowa: O(n), gdzie n jest długością listy.
Przestrzeń pomocnicza: O(1)
Python iteruje po wielu listach za pomocą funkcji zip().
W tym przykładzie funkcja zip() została wykorzystana do jednoczesnej iteracji po elementach z dwóch list, listy1 i listy2, łącząc odpowiednie elementy w krotki w celu późniejszego wydrukowania.
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}'> )> |
Wyjście
1 ->p 2 -> q 3 -> r
Iteruj po liście w Pythonie za pomocą NumPy
W przypadku bardzo dużych list n-wymiarowych (na przykład tablicy obrazów) czasami lepiej jest użyć zewnętrznej biblioteki, takiej jak tępy . Możemy użyć np. enumerate(), aby naśladować zachowanie wyliczania. Dodatkowa moc NumPy wynika z faktu, że możemy nawet kontrolować sposób odwiedzania elementów (powiedzmy kolejność w Fortranie, a nie w C :)), ale jednym zastrzeżeniem jest to, że np.nditer traktuje tablicę jako tylko do odczytu default, więc należy przekazać dodatkowe flagi, takie jak op_flags=['readwrite'], aby móc modyfikować elementy.
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)> |
Wyjście:
0 1 2 3 4 5 6 7 8
Złożoność czasowa: NA)
Przestrzeń pomocnicza: O(1)