Python: Списки
Теория: Циклы с индексами
Цикл for можно использовать не только для обхода списка, но и для повторения действий. Для этого используют функцию range().
Функция range() в Python используется для генерации последовательностей чисел. Она часто применяется в циклах for для задания диапазона чисел, которые нужно перебрать.
Функция range в Python является встроенной функцией, которая создает последовательность чисел внутри определенного диапазона. Ее можно использовать в цикле for для контроля количества итераций.
У range() есть несколько вариантов использования:
range(stop)создает последовательность от 0 доstop - 1range(start, stop)создает последовательность от start доstop - 1range(start, stop, step)создает последовательность из чисел от start доstop - 1, с шагомstep
Теперь попробуем вывести числа в обратном порядке
На примерах выше мы видим, что итерация завершается до конечного значения
Обход списка с использованием индекса
Можно использовать range() для получения индексов элементов списка, что может быть полезно, если нужно работать с индексами:
В данном коде создаем список из трех элементов — имен. Далее в цикле обходим список и выводим на экран все имена так, что каждое имя оказывается на новой строке (print() автоматически делает перевод строки).
Рассмотрим этот этап подробнее. При обходе списка циклом for счетчик, как правило, играет роль индекса в списке. Он инициализируется нулем и увеличивается до len(user_names) - 1, что соответствует индексу последнего элемента.
А что, если нам нужно вывести значения в обратном порядке? Для этого есть два способа. Один — идти в прямом порядке, то есть от нулевого индекса до последнего, и каждый раз вычислять нужный индекс по такой формуле размер списка - 1 - текущее значение счетчика.
Другой способ подразумевает обход в обратном порядке, от верхней границы до нижней, то есть от последнего индекса списка к первому (нулю, так как индексирование начинается с нуля). В такой ситуации код меняется на следующий:
Код выше можно сделать проще с помощью функции reversed()
Изменение
Во время обхода списка его можно не только читать, но и модифицировать. Предположим, что перед нами стоит задача нормализации списка электронных адресов — например, приведение их к нижнему регистру. Тогда код будет выглядеть так:
Ключевая строчка: emails[i] = normalized_email. В ней происходит перезапись элемента под индексом i.
Цикл while
Цикл for можно заменить на while. Тогда нам необходимо будет вручную изменять счетчик:
Цикл while можно использовать для работы со списками, но он имеет несколько потенциальных минусов по сравнению с циклом for, когда речь идёт о переборе элементов списка. В цикле while нужно явно контролировать условие завершения.
Если вы забыли обновить счётчик или неправильно задали условие выхода, цикл может стать бесконечным. Например:
Или если укажете неверное условие, то выйдите за пределы списка:
Резюме
Цикл for можно комбинировать со списками в любых вариантах. Список необязательно перебирать полностью и от начала до конца. Можно например смотреть только каждый второй элемент или двигаться до половины. Все это зависит от конкретной задачи.
Точно так же списки сочетаются с while. Единственное, что нужно спискам – индекс.







