Гид по технологиям

Как использовать цикл for в Python

5 min read Python Обновлено 21 Apr 2026
Цикл for в Python — руководство и примеры
Цикл for в Python — руководство и примеры

Обложка: Как использовать цикл for в Python.

Краткое определение

Цикл for в Python проходит по каждому элементу итерируемого объекта (iterable) и выполняет набор инструкций для каждого элемента.

Важно: iterable — это объект, по которому можно пройтись в цикле (список, строка, кортеж, словарь, множество, генератор и т.д.).

Как работает цикл for в Python

Цикл for перебирает элементы последовательности один за другим. В простейшем виде конструкция выглядит так:

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

Каждой итерации соответствует присваивание следующего элемента последовательности имени переменной и выполнение блока кода. Если последовательность пуста — тело цикла не выполнится ни разу.

Однострочное пояснение

for — предназначен для строго известного набора итераций; while — для ситуаций с неопределённым числом повторов.

Базовые примеры

Вывод каждого элемента списка:

items = ["shoe", "bag", "shirts", "lamp"]
for i in items:
    print(i)

Вывод элементов, содержащих букву “a”:

items = ["shoe", "bag", "shirts", "lamp"]
for i in items:
    if "a" in i:
        print(i)

Цикл с блоком else — выполняется, когда цикл завершился нормально (без break):

b = [2, 3, 5, 6]
for i in b:
    print(i)
else:
    print("Loop has ended")

Использование break для преждевременного выхода:

b = [2, 3, 5, 6]
for i in b:
    if i > 3:
        break
    print(i)

Использование continue для пропуска текущей итерации:

b = [2, 3, 5, 6]
for i in b:
    if i > 3:
        continue
    print(i)

Диапазоны и шаги: range

range генерирует последовательность чисел. Часто используется вместе с for:

for x in range(1, 101):
    print(x)

for x in range(1, 101):
    if x % 2 == 1:
        print(x)

# Таблица умножения на 2 для нечётных чисел
for x in range(1, 101):
    if x % 2 == 1:
        print(x, "x", 2, "=", x * 2)

Советы по range:

  • range(stop)
  • range(start, stop)
  • range(start, stop, step)

Работа со строками

Строка — итерируемый объект: цикл проходит по символам.

a = "How to use a for loop in Python"
for ch in a:
    print(ch)

Подсчёт символов и слов (пояснение):

  • Метод count(‘’) возвращает число вхождений пустой подстроки; результат равен длине строки + 1.
  • Для подсчёта символов лучше использовать len(s).

Примеры:

a = "How to use a for loop in Python"
print(len(a))       # количество символов, включая пробелы
print(len(a.split())) # количество слов

Альтернативный способ с list comprehension:

a = ["How to use a for loop in Python"]
c = [len(b) for b in a]
print(c)  # [32] при текущей строке

Для подсчёта слов:

a = ["How to use a for loop in Python"]
c = [len(b.split()) for b in a]
print(c)  # [8]

Итерация по массивам и словарям

Пример: выбираем больных особей и помещаем в карантин.

array = [
    {"name": "Sheep1", "healthy": "Yes"},
    {"name": "Sheep3", "healthy": "No"},
    {"name": "Sheep4", "healthy": "Yes"},
    {"name": "Sheep5", "healthy": "Yes"},
    {"name": "Sheep8", "healthy": "No"},
    {"name": "Sheep7", "healthy": "No"},
    {"name": "Sheep9", "healthy": "No"}
]

for sheep in array:
    if sheep["healthy"] == "No":
        print("Quarantine", sheep["name"])

Итерация по словарю возвращает ключи по умолчанию:

d = {"name": "Python", "method": "write"}
for key in d:
    print(key)

# чтобы получить и ключи, и значения:
for key, value in d.items():
    print(key, value)

Вложенные циклы

Вложенные циклы полезны для обработки структур с несколькими уровнями.

nested_list = [[1, 2, 4, 5], {"name": "Python", "method": "write"}]

for block in nested_list:
    for item in block:
        print(item)

Примечание: при итерации по словарю во внутреннем цикле вы получите ключи словаря.

Полезные приёмы и конструкции

  • enumerate: индекс + значение
for idx, val in enumerate([10, 20, 30]):
    print(idx, val)
  • zip: параллельная итерация по нескольким последовательностям
for a, b in zip([1, 2], ["a", "b"]):
    print(a, b)
  • reversed/sorted: итерация в обратном или отсортированном порядке
for x in reversed([1, 2, 3]):
    print(x)
  • List comprehension как компактная замена простым for
squares = [x * x for x in range(10)]
  • Генераторы и итераторы для ленивых вычислений

Когда for не подходит (контрпример)

  • Нужно выполнять цикл до наступления внешнего события (например, чтение сокета) — обычно while подходит лучше.
  • Нужен бесконечный цикл с явным условием остановки извне — while более явный.
  • Операция требует одновременной обработки очень больших данных — рассмотрите генераторы, itertools или потоковое чтение.

Альтернативы и сопутствующие инструменты

  • while — для неизвестного числа итераций
  • list/dict/set comprehensions — компактный синтаксис для создания коллекций
  • map/filter — функциональный стиль обработки
  • itertools — инструменты для сложной итерации (chain, islice, groupby)

Как выбрать: for или while

flowchart TD
    A[Есть набор элементов/известный диапазон?] -->|Да| B[Используйте for]
    A -->|Нет| C[Нужны внешние/непредсказуемые условия?]
    C -->|Да| D[Используйте while]
    C -->|Нет| E[Подумайте о генераторе или iterator]

Критерии приёмки

  • Код проходит тесты, описанные ниже.
  • Для списочных преобразований используется list comprehension или понятный for.
  • Нет лишних перечислений индексов, когда можно использовать enumerate.

Тесты и случаи приёмки

  1. Вывод элементов списка
  • Вход: [“a”, “b”, “c”]
  • Ожидаемый вывод: a\nb\nc
  1. Прерывание при первом значении > 3
  • Вход: [1, 4, 2]
  • Ожидаемый вывод: 1
  1. Подсчёт слов
  • Вход: “Hello world”
  • Ожидаемый вывод: 2

Шпаргалка (cheat sheet)

  • Синтаксис for: for x in iterable:
  • enumerate(iterable) -> (index, value)
  • zip(a, b, …) -> кортежи элементов параллельно
  • range(start, stop[, step]) для числовых диапазонов
  • list comprehension: [expr for x in iterable if cond]
  • break — прерывает цикл
  • continue — пропускает текущую итерацию
  • else после for выполняется при нормальном завершении

Рольовые чек-листы (для разработчика и ревьюера)

Для разработчика:

  • Используйте понятные имена переменных (i, j — только в кратких циклах).
  • Проверяйте граничные случаи (пустые последовательности).
  • Предпочитайте enumerate/zip, чтобы избежать ошибок с индексами.

Для ревьюера:

  • Есть ли более простая конструкция (comprehension вместо цикла)?
  • Нет ли лишних вычислений внутри цикла?
  • Обработаны ли пустые входные данные?

Практические примеры (кейсы и исключения)

  1. Собрать только уникальные элементы с сохранением порядка:
seen = set()
result = []
for x in items:
    if x in seen:
        continue
    seen.add(x)
    result.append(x)
  1. Построить словарь частот слов:
text = "a b a c"
freq = {}
for w in text.split():
    freq[w] = freq.get(w, 0) + 1
  1. Вложенная итерация для матрицы:
matrix = [[1,2],[3,4]]
for row in matrix:
    for val in row:
        print(val)

Безопасность и производительность

  • Для больших последовательностей используйте генераторы или выражения-генераторы, чтобы не выделять память под всю коллекцию.
  • В цикле избегайте дорогостоящих операций (запросы в базу, повторная конвертация) — выносите их за цикл или кешируйте результат.

Краткая методология: как написать чистый цикл for

  1. Чётко определить входную последовательность.
  2. Решить, нужен ли индекс — если да, использовать enumerate.
  3. Продумать выход из цикла (break) и исключительные случаи (continue).
  4. Тестировать на пустом и граничном входе.

Глоссарий (одно предложение на термин)

  • iterable: объект, по которому можно пройтись в цикле.
  • iterator: объект, который возвращает следующий элемент при вызове next().
  • comprehension: компактный синтаксис для создания коллекций.
  • generator: ленивый объект, создающий элементы по требованию.

Сводка

  • Цикл for — основной инструмент для обработки последовательностей в Python.
  • Пользуйтесь enumerate и zip, когда нужны индексы или параллельные итерации.
  • Для больших данных отдавайте предпочтение генераторам и itertools.

См. также: Как создавать и использовать собственные модули в Python

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Исправить «preparing security options» в Windows
Windows

Исправить «preparing security options» в Windows

Как добавить Bluetooth на ПК
Аппаратное обеспечение

Как добавить Bluetooth на ПК

Улучшение звука Hi-Res без больших затрат
Аудио

Улучшение звука Hi-Res без больших затрат

Apple Music Lossless: как включить и нужен ли он
Аудио

Apple Music Lossless: как включить и нужен ли он

Home Assistant на Raspberry Pi — локальный умный дом
Smart Home

Home Assistant на Raspberry Pi — локальный умный дом

Как получить выразительное ч/б фото в Photoshop
Фотография

Как получить выразительное ч/б фото в Photoshop