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.

Вот как работает эта программа:

Итерация

Значение i

print(i)

Последний элемент?

1-я

0

Печатает 0

Нет. Тело цикла выполняется.

2-я

1

Печатает 1

Нет. Тело цикла выполняется.

3-я

2

Печатает 2

Нет. Тело цикла выполняется.

4-я

3

Печатает 3

Да. Тело цикла выполняется, и цикл завершается.


Операторы 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.


Видео: цикл for в Python