Цикл for в Python
Благодаря этой статье вы научитесь перебирать последовательности элементов с помощью различных вариаций цикла for
.
Что такое цикл for
Цикл for
в Python используется для перебора последовательностей (списков, кортежей, строк) и других итерируемых объектов. Перебор последовательности называется обходом.
Синтаксис цикла
for значение in последовательность:
Тело цикла for
Цикл продолжается до тех пор, пока мы не достигнем последнего элемента последовательности. Тело цикла for является отдельным блоком кода и отделяется отступом.
Блок-схема цикла
Пример цикла
# Программа находит сумму элементов последовательности
# Список чисел
numbers = [6, 5, 3, 8, 4, 2, 5, 4, 11]
# Переменная, в которой хранится сумма
sum = 0
# Итерация цикла
for value in numbers:
sum = sum+value
print("Сумма равна", sum)
Вывод:
Сумма равна 48
Функция range()
С помощью функции range()
мы можем сгенерировать последовательность чисел. range(10)
, к примеру, сгенерирует числа от 0 до 9 (всего 10 чисел).
Мы также можем определить начало, конец и размер шага —range(начало, конец, размер_шага)
. Если не указать шаг (размер_шага), то по умолчанию он будет равен 1.
Объект range в некотором смысле «ленивый». Когда мы вызываем этот объект, он не генерирует все числа, которые он «содержит». Но это и не итератор — он поддерживает операции in
, len
и __getitem__
.
Эта функция не хранит все значения в памяти — это неэффективно. Для нее важны лишь начало, конец и размер шага — генерация следующего числа происходит на ходу.
Для вывода всех элементов следует воспользоваться функцией list()
.
Наглядный пример
print(range(10))
print(list(range(10)))
print(list(range(2, 8)))
print(list(range(2, 20, 3)))
Вывод:
range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7]
[2, 5, 8, 11, 14, 17]
Функцию range()
можно использовать для перебора последовательности чисел в цикле for
. Индексация реализуется при комбинации с функцией len()
. Пример:
# Программа для итерации списка с использованием индексации
genre = ['поп', 'рок', 'джаз']
# проходимся по циклу, используя индекс i
for i in range(len(genre)):
print("Мне нравится", genre[i])
Вывод:
Мне нравится поп
Мне нравится рок
Мне нравится джаз
Цикл for с блоком else
В цикле for
может быть дополнительный блок else
. Блок else
выполняется, если элементы последовательности закончились.
Для остановки цикла for
используется ключевое слово break
. В этом случае выполнение цикла останавливается.
Следовательно, блок else
выполняется только в том случае, если выполнение цикла не было прервано оператором break.
Наглядный пример
digits = [0, 1, 5]
for i in digits:
print(i)
else:
print("Элементов в списке не осталось.")
Вывод:
0
1
5
Элементов в списке не осталось.
В этом примере цикл for печатает элементы списка до тех пор, пока он не закончится. После завершения цикла выполняется блок else
, который печатает сообщение Элементов в списке не осталось
.
Оператор for...else
можно использовать так: блок else
выполнится только в том случае, если не выполнится оператор break
.
Пример
# Программа выводит на экран оценку студента
student_name = 'Артем'
marks = {'Роман': 90, 'Максим': 55, 'Артур': 77}
for student in marks:
if student == student_name:
print(marks[student])
break
else:
print('Студент не найден.')
Вывод:
Студент не найден.