Python: цикл for
В Python мы используем цикл for для перебора последовательностей, таких как списки, строки, словари и так далее. Например,
languages = ['Swift', 'Python', 'Go']
# перебираем элементы списка по одному
for lang in languages:
print(lang)
Вывод
Swift
Python
Go
В приведённом выше примере мы создали список с именем languages. Поскольку в списке три элемента, цикл выполняется 3 раза.
Значение lang:
Swiftна первой итерации.Pythonна второй итерации.Goна третьей итерации.
Синтаксис цикла for
for val in sequence:
# выполняемый код
Цикл for последовательно перебирает элементы последовательности, и на каждой итерации выполняется тело цикла.
Цикл завершается после того, как тело цикла будет выполнено для последнего элемента.
Отступы в цикле
В Python мы используем отступы (пробелы в начале строки) для определения блока кода, например, тела цикла. Например,
languages = ['Swift', 'Python', 'Go']
# начало цикла
for lang in languages:
print(lang)
print('-----')
# конец цикла for
print('Last statement')
Вывод
Swift
-----
Python
-----
Go
-----
Last statement
Здесь print('Last statement') находится вне тела цикла. Поэтому эта инструкция выполняется только один раз в конце.
Пример: перебор строки
Если мы перебираем строку, мы получаем отдельные символы строки один за другим.
language = 'Python'
# перебираем каждый символ в language
for x in language:
print(x)
Вывод
P
y
t
h
o
n
Здесь мы напечатали каждый символ строки language с помощью цикла for.
Цикл for с функцией range()
В Python функция range() возвращает последовательность чисел. Например,
# генерируем числа от 0 до 3
values = range(0, 4)
Здесь range(0, 4) возвращает последовательность 0, 1, 2 и 3.
Поскольку функция range() возвращает последовательность чисел, мы можем перебирать её с помощью цикла for. Например,
# итерация от i = 0 до i = 3
for i in range(0, 4):
print(i)
Вывод
0
1
2
3
Здесь мы использовали цикл for для перебора диапазона от 0 до 3.
Вот как работает эта программа:
Итерация |
Значение |
|
Последний элемент? |
|---|---|---|---|
1-я |
|
Печатает |
Нет. Тело цикла выполняется. |
2-я |
|
Печатает |
Нет. Тело цикла выполняется. |
3-я |
|
Печатает |
Нет. Тело цикла выполняется. |
4-я |
|
Печатает |
Да. Тело цикла выполняется, и цикл завершается. |
Операторы break и continue
Операторы break и continue используются для изменения хода выполнения циклов.
Оператор break
Оператор break немедленно завершает цикл for до того, как он переберёт все элементы. Например,
languages = ['Swift', 'Python', 'Go', 'C++']
for lang in languages:
if lang == 'Go':
break
print(lang)
Вывод
Swift
Python
Здесь, когда lang равно 'Go', выполняется оператор break внутри условия if, который немедленно завершает цикл. Именно поэтому Go и C++ не выводятся.
Оператор continue
Оператор continue пропускает текущую итерацию цикла и переходит к следующей итерации. Например,
languages = ['Swift', 'Python', 'Go', 'C++']
for lang in languages:
if lang == 'Go':
continue
print(lang)
Вывод
Swift
Python
C++
Здесь, когда lang равно 'Go', выполняется оператор continue, который пропускает оставшийся код внутри цикла для этой итерации.
Однако цикл продолжается на следующей итерации. Именно поэтому C++ отображается в выводе.
Подробнее об этом см. Python: break и continue.
Вложенные циклы for
Цикл также может содержать внутри себя другой цикл. Такие циклы называются вложенными циклами.
Во вложенном цикле внутренний цикл выполняется один раз для каждой итерации внешнего цикла.
# внешний цикл
attributes = ['Electric', 'Fast']
cars = ['Tesla', 'Porsche', 'Mercedes']
for attribute in attributes:
for car in cars:
print(attribute, car)
# этот оператор находится вне внутреннего цикла
print("-----")
Вывод
Electric Tesla
Electric Porsche
Electric Mercedes
-----
Fast Tesla
Fast Porsche
Fast Mercedes
-----
Использование цикла for без доступа к элементам последовательности
Если мы не собираемся использовать элементы последовательности внутри тела цикла, удобнее использовать _ (подчёркивание) в качестве переменной цикла. Например,
# итерация от i = 0 до 3
for _ in range(0, 4):
print('Hi')
Вывод
Hi
Hi
Hi
Hi
Здесь цикл выполняется четыре раза. На каждой итерации мы выводим Hi. Поскольку мы не используем элементы последовательности (0, 1, 2, 3) в теле цикла, лучше использовать _ в качестве переменной цикла.
Совет
Также читайте: Python: цикл while.