ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Вложенные циклы в Python: таблицы и перебор пар

Автор: · Обновлено

Во вложенных циклах внутренний цикл полностью выполняется для каждого значения внешней переменной. Если внешний делает r итераций, а внутренний c, тело выполняется r × c раз. Переменные циклов должны иметь разные имена и отражать роль — например row и column.

Координаты прямоугольной таблицы

rows = 2
columns = 3

for row in range(rows):
    for column in range(columns):
        print(row, column)

Ожидаемый порядок:

0 0
0 1
0 2
1 0
1 1
1 2

Сначала row равен 0, а column проходит 0, 1, 2. Затем внешний цикл меняет row на 1 и внутренний диапазон начинается заново.

Отступ и количество операций

Если print сдвинуть на уровень внешнего цикла, он выполнится только два раза после завершения внутренних проходов. Если случайно использовать range(rows) и для столбцов, квадратный результат скроет ошибку на тесте 2 × 2; прямоугольный тест 2 × 3 обнаружит её.

Полный перебор пар быстро растёт. Для 1000 × 1000 тело выполнится миллион раз, поэтому перед добавлением третьего цикла оцените масштаб. Не всякая задача требует проверить каждую пару: иногда данные можно хранить в множестве или словаре.

Таблица умножения фрагментом

Выведите таблицу произведений для строк от 1 до 3 и столбцов от 1 до 4 в виде «2 * 3 = 6». Проверьте, что получилось 12 строк, первая содержит 1 и 1, последняя — 3 и 4. Затем добавьте условие и выведите только пары с чётным произведением. До запуска посчитайте количество подходящих пар вручную.

Число проходов по сетке

Для прямоугольников 2 × 5, 5 × 2 и 0 × 4 посчитайте итерации вложенных циклов с отдельным счётчиком. Сравните фактическое число с произведением размеров. Затем добавьте continue для пропуска диагональных пар row == column и вычислите количество напечатанных координат. Не добавляйте break, пока не сможете описать, какой именно цикл он завершит: команда влияет только на ближайший. В отчёте разделите оценку полного числа итераций и числа полезных действий после фильтра — эти величины не всегда совпадают.

Практикум: координаты без зеркальных дублей

Выведите клетки прямоугольника 3 × 4 как пары (row, column) и подтвердите число итераций. Затем для списка имён получите все пары разных участников только один раз, задав внутренний диапазон от i + 1. Проверьте три имени вручную. Сравните с двумя полными диапазонами, где появляются пары с самим собой и зеркальные дубли. Для размера 1000 оцените число пар до запуска и решите, допустим ли такой перебор.

Контрольная точка

Как меняется внутренняя граница на каждой итерации и почему условие i < j гарантирует уникальность пары позиций? Отличайте позиции от равных значений.

Частые вопросы

Как посчитать общее число выполнений внутреннего тела?

Для прямоугольных диапазонов перемножьте их длины. Для пар с i < j получается сумма n - 1 + n - 2 + … + 1, то есть n(n - 1)/2.

Источники