Цикл for и итерация по последовательностям

Цикл for и итерация по последовательностям

В предыдущем уроке вы познакомились с while — циклом, который работает «пока условие истинно». Часто задача другая: «пройти по каждому элементу последовательности». Для этого Python предоставляет цикл for — лаконичный и мощный инструмент перебора.

Синтаксис for

for переменная in последовательность:
    # тело цикла

На каждой итерации переменная принимает очередное значение из последовательности. Цикл завершается, когда последовательность исчерпана.

Перебор строки

Строка — это последовательность символов. for перебирает их один за другим:

word = "Python"
for char in word:
    print(char)

Вывод:

P
y
t
h
o
n

Перебор списка

Списки мы подробно изучим в модуле 5, но уже сейчас можно использовать for с ними:

fruits = ["яблоко", "банан", "вишня"]
for fruit in fruits:
    print(f"Фрукт: {fruit}")

Вывод:

Фрукт: яблоко
Фрукт: банан
Фрукт: вишня

Использование переменной цикла

Переменная цикла (fruit, char) — это обычная переменная Python. Её можно использовать в теле цикла любым способом: в вычислениях, в условиях, в f-строках.

numbers = [3, 7, 1, 9, 4, 6]
total = 0
for n in numbers:
    total += n

print(f"Сумма: {total}")   # 30

Важно: имя переменной цикла — ваш выбор. for x in ..., for item in ..., for element in ... — все варианты работают. По соглашению используйте осмысленное имя, отражающее тип элементов.

Специальное имя _

Если значение элемента не нужно — используйте _ как имя переменной. Это соглашение «нам не важно это значение»:

for _ in [1, 2, 3, 4, 5]:
    print("tick")   # выведет 5 раз

for с функцией range()

Очень часто нужно выполнить что-то N раз или перебрать числа от A до B. Для этого используется функция range() — подробно разберём её в следующем уроке:

for i in range(5):   # 0, 1, 2, 3, 4
    print(i)

for i in range(1, 6):   # 1, 2, 3, 4, 5
    print(i)

Сравнение for и while

for и while — два разных инструмента для похожей задачи. Выбор зависит от ситуации:

СитуацияЛучший выбор
Перебрать элементы последовательностиfor
Выполнить N разfor range(N)
Повторять пока выполняется условиеwhile
Неизвестное заранее число итерацийwhile

Один и тот же код с for и while:

# for — лаконично:
for i in range(1, 6):
    print(i)

# while — более громоздко:
i = 1
while i <= 5:
    print(i)
    i += 1

Правило: если знаете, что именно перебираете — используйте for. Если условие остановки неизвестно заранее — while.

enumerate: индекс + значение

Иногда при переборе нужен не только элемент, но и его порядковый номер. Функция enumerate() даёт оба:

fruits = ["яблоко", "банан", "вишня"]
for i, fruit in enumerate(fruits):
    print(f"{i + 1}. {fruit}")

Вывод:

1. яблоко
2. банан
3. вишня

enumerate() возвращает пары (индекс, элемент). По умолчанию нумерация с 0; можно задать другое начало: enumerate(fruits, start=1).

Перебор строки с индексом

word = "Hello"
for i, char in enumerate(word):
    print(f"word[{i}] = '{char}'")

Вывод:

word[0] = 'H'
word[1] = 'e'
word[2] = 'l'
word[3] = 'l'
word[4] = 'o'

Накопление через for

Типичный паттерн — собирать строку или число по ходу перебора:

words = ["Hello", "World", "Python"]
result = ""
for word in words:
    result += word + " "
result = result.strip()   # убрать trailing пробел
print(result)   # Hello World Python

Проверь себя

Что выведет следующий код?

s = "hello"
count = 0
for char in s:
    if char in "aeiou":
        count += 1
print(count)

Строка "hello" содержит гласные e, o. Счётчик дойдёт до 2. Вывод: 2.

Итог

  • for переменная in последовательность: перебирает элементы по одному.
  • Работает со строками, списками и любыми итерируемыми объектами.
  • Предпочтителен перед while, когда перебираем конкретную последовательность.
  • _ как имя переменной — соглашение «значение не нужно».
  • enumerate() даёт одновременно индекс и значение.
  • Для N итераций используйте for i in range(N) — подробнее в следующем уроке.

В следующем уроке детально разберём range() — ключевую функцию для генерации числовых последовательностей в циклах.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике