Ітерація списку в Python
The Список еквівалентний масивам в інших мовах, з додатковою перевагою динамічного розміру.
в Python , список є типом контейнера в структурах даних, який використовується для зберігання кількох даних одночасно. На відміну від Набори , списки в Python упорядковані та мають певну кількість. У цій статті ми побачимо, як виконати ітерацію по списку в Python, а також як виконати цикл Python по списку рядків.
Перебір Python по списку
Давайте розглянемо всі різні способи перебору списку в Python і порівняння продуктивності між ними.
- Використання для циклу
- Використання циклу for і діапазон()
- Використовуючи a цикл while
- Використання розуміння списку
- Використання enumerate() метод
- Використовуючи функція iter і наступна функція
- Використовуючи функція map().
- Використання функції zip().
- Використання NumPy модуль
Ітерація по списку за допомогою циклу For
Ми можемо перебирати список у Python за допомогою простого Для петлі .
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using for loop> for> i> in> list> :> > print> (i)> |
Вихід
1 3 5 7 9
Часова складність: O(n) – де n – кількість елементів у списку.
Допоміжні приміщення: O(1) – оскільки ми не використовуємо додатковий простір.
Ітерація по списку за допомогою f або цикл і діапазон()
Якщо ми хочемо використовувати традиційний цикл for, який виконує ітерацію від числа x до числа 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])> |
Вихід
1 3 5 7 9
Часова складність: O(n), де n - довжина вхідного списку.
Допоміжні приміщення: O(1), що є постійним простором
Ітерація списку в Python за допомогою цикл while
Ми також можемо перебирати список Python за допомогою a цикл 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> |
Вихід
1 3 5 7 9
Часова складність: O(n), де n - довжина списку.
Допоміжні приміщення: O(1), оскільки для змінних i та length використовується лише постійна кількість додаткового простору.
Ітерація списку за допомогою розуміння списку
Ми можемо використовувати розуміння списку (можливо, найконкретніший спосіб) для повторення списку в Python.
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using list comprehension> [> print> (i)> for> i> in> list> ]> |
Вихід
1 3 5 7 9
Ітерація списку в Python за допомогою enumerate()
Якщо ми хочемо перетворити список на повторюваний список кортежів (або отримати індекс на основі перевірки умови, наприклад, у лінійному пошуку, вам може знадобитися зберегти індекс мінімального елемента), ви можете використовувати функція 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)> |
Вихід
0 , 1 1 , 3 2 , 5 3 , 7 4 , 9
Примітка: Навіть метод 2 можна використовувати для пошуку індексу, але метод 1 не може (якщо додаткова змінна не збільшується на кожній ітерації), а метод 5 дає стисле представлення цього індексування.
Ітерація списку в Python за допомогою функції iter і функції next
Ось додатковий підхід із використанням функції iter і функції next:
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> |
Вихід
1 3 5 7 9
Часова складність: O(n)
Допоміжні приміщення: О(1)
Перебирайте список у Python за допомогою функції map().
Використовувати map() функція для застосування функції до кожного елемента списку.
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> |
Вихід
1 3 5 7 9
Часова складність: O(n), де n - довжина списку.
Допоміжні приміщення: О(1)
Python перебирає кілька списків за допомогою функції zip().
У цьому прикладі функція zip() використовується для одночасного перебору елементів із двох списків, list1 і list2, об’єднуючи відповідні елементи разом у кортежі для подальшого друку.
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}'> )> |
Вихід
1 ->p 2 -> q 3 -> r
Ітерація списку в Python за допомогою NumPy
Для дуже великих n-вимірних списків (наприклад, масиву зображень) іноді краще використовувати зовнішню бібліотеку, таку як numpy . Ми можемо використовувати np. enumerate() для імітації поведінки перерахування. Додаткова потужність NumPy походить від того факту, що ми навіть можемо контролювати спосіб відвідування елементів (скажімо, порядок Fortran, а не порядок C :)), але одне застереження полягає в тому, що np.nditer розглядає масив як доступний лише для читання. за замовчуванням, тому потрібно передати додаткові прапорці, такі як 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)> |
Вихід:
0 1 2 3 4 5 6 7 8
Часова складність: O(n)
Допоміжні приміщення: О(1)