Переход к следующей итерации цикла в Python: команда continue

Раздел: Основы Python -> Циклы в Python

Переход к следующей итерации цикла в Python

При работе с циклами часто возникает необходимость пропустить текущий шаг и сразу перейти к следующему. В Python для этого используется оператор continue. Он прерывает выполнение текущей итерации и передает управление на начало цикла для следующей итерации.

Основной способ: оператор continue

Оператор continue применяется внутри тела цикла for или while. При его выполнении оставшаяся часть текущей итерации пропускается, и цикл переходит к проверке условия (для while) или к следующему элементу последовательности (для for).


# Пример: вывод чисел от 1 до 5, пропуская 3
for i in range(1, 6):
    if i == 3:
        continue
    print(i)
  

следующая итерация python (перейти к следующей итерации цикла в python)

Результат:

1
2
4
5
  

Python пока (цикл while в python)

Как видно, число 3 не выводится, так как при i == 3 срабатывает continue, и управление сразу переходит к следующему элементу range.

Как пропустить итерации при выполнении определенного условия?

Простой способ - использовать continue после проверки условия. Например, требуется вывести только нечетные числа из списка:


numbers = [1, 2, 3, 4, 5, 6]
for num in numbers:
    if num % 2 == 0:
        continue
    print(num)
  

Вывод:

1
3
5
  

Четные числа пропускаются, остальные выводятся.

Как использовать continue в цикле while?

В цикле while continue возвращает управление на проверку условия. Важно предусмотреть изменение переменной цикла до continue, иначе возможен бесконечный цикл. Пример с подсчетом:


count = 0
while count < 5:
    count += 1
    if count == 3:
        continue
    print(count)
  

Вывод:

1
2
4
5
  

Если бы инкремент стоял после continue, для count=3 он не выполнился бы, и цикл зациклился.

Как пропустить итерацию при возникновении исключения?

Можно комбинировать обработку исключений с continue. Например, при обработке списка значений, часть которых вызывает ошибку:


data = ['10', 'abc', '20', '30', 'xyz']
for item in data:
    try:
        number = int(item)
    except ValueError:
        print(f"Пропуск: {item} не число")
        continue
    print(number * 2)
  

Вывод:

20
Пропуск: abc не число
40
60
Пропуск: xyz не число
  

После обработки исключения continue переводит цикл к следующему элементу, не выполняя остаток тела.

Как работает continue во вложенных циклах?

Оператор continue относится только к самому внутреннему циклу, в котором он находится. Пример с таблицей умножения, пропуск строки:


for i in range(1, 4):
    for j in range(1, 4):
        if j == 2:
            continue
        print(i, '*', j, '=', i*j)
    print('---')
  

Вывод:

1 * 1 = 1
1 * 3 = 3
---
2 * 1 = 2
2 * 3 = 6
---
3 * 1 = 3
3 * 3 = 9
---
  

Внутренний цикл пропускает j=2, внешний продолжается нормально.

Как использовать continue с else в цикле?

Оператор continue не влияет на выполнение блока else в цикле. Блок else выполняется, если цикл завершился без break. continue не прерывает цикл, поэтому else сработает. Пример:


for i in range(3):
    if i == 1:
        continue
    print(i)
else:
    print("Цикл завершен")
  

Вывод:

0
2
Цикл завершен
  

Блок else выполняется, так как цикл не прерывался break.

Типичные ошибки и проблемы

  • Бесконечный цикл в while: если изменение переменной цикла происходит после continue, то для итераций с условием пропуска изменение не выполняется. Решение - размещать изменение перед continue или использовать for.
  • continue в блоке finally: оператор continue в finally может привести к неожиданному поведению, так как он подавляет исключение. Рекомендуется избегать такого использования.
  • Пропуск важной обработки: использование continue без тщательной проверки условия может случайно пропустить нужные итерации. Следует всегда проверять логику условия.
  • Забыли continue: если условие пропуска не сопровождается continue, код продолжит выполнение, что может привести к неверным результатам.

Расширенные примеры использования continue

Пример 1: Фильтрация данных с несколькими условиями

Требуется обработать список чисел, пропуская отрицательные и нулевые значения, а также числа, кратные 3.

Пример

numbers = [-5, 0, 2, 9, 6, 15, 4, -1, 12]
processed = []
for n in numbers:
    if n <= 0:
        continue
    if n % 3 == 0:
        continue
    processed.append(n * 2)
print(processed)

Результат:

[4, 8]

Из списка остались только 2 и 4 (не отрицательные, не нули, не кратные 3).

Пример 2: Пропуск итераций при работе с файлом

Чтение файла построчно, игнорирование пустых строк и строк, начинающихся с комментария (#).

Пример

config = [
    "host=localhost",
    "# это комментарий",
    "",
    "port=8080",
    "# еще комментарий",
    "debug=true"
]
for line in config:
    if line.strip() == "":
        continue
    if line.startswith("#"):
        continue
    print("Обработка:", line)

Вывод:

Обработка: host=localhost
Обработка: port=8080
Обработка: debug=true

Пример 3: Использование continue в цикле с генератором

Генератор чисел Фибоначчи, пропуск чисел меньше 10.

Пример

def fibonacci(limit):
    a, b = 0, 1
    while a < limit:
        yield a
        a, b = b, a + b

for num in fibonacci(50):
    if num < 10:
        continue
    print(num)

Вывод:

10
13
21
34

Пример 4: Вложенные циклы с continue для пропуска комбинаций

Поиск пар чисел (a, b) из диапазона 1..3, сумма которых нечетна. Используем continue для внутреннего цикла.

Пример

for a in range(1, 4):
    for b in range(1, 4):
        if (a + b) % 2 == 0:
            continue
        print(f"({a}, {b}) сумма = {a+b}")

Вывод:

(1, 2) сумма = 3
(1, 4) сумма = 5
(2, 1) сумма = 3
(2, 3) сумма = 5
(3, 2) сумма = 5
(3, 4) сумма = 7

Пары с четной суммой не выводятся.

Пример 5: Комбинация continue и break в одном цикле

Обработка списка команд: пропуск пустых команд (continue) и остановка при команде "stop" (break).

Пример

commands = ["start", "", "run", "stop", "finish", ""]
for cmd in commands:
    if cmd == "":
        continue
    if cmd == "stop":
        break
    print("Выполняем:", cmd)
print("Цикл завершен")

Вывод:

Выполняем: start
Выполняем: run
Цикл завершен

Пример 6: continue в цикле с else после break

Проверка, все ли числа положительны. Если найдено отрицательное, выводится предупреждение и цикл прерывается (без else).

Пример

def check_positive(numbers):
    for n in numbers:
        if n < 0:
            print("Найдено отрицательное:", n)
            break
    else:
        print("Все числа положительны")

check_positive([5, 7, 2, 8])
check_positive([5, -3, 2])

Вывод:

Все числа положительны
Найдено отрицательное: -3

Пример 7: Пропуск итераций с использованием continue в list comprehension (непрямой способ)

В list comprehension нельзя напрямую использовать continue, но можно эмулировать его с помощью условия. Пример: оставить только числа, не кратные 2 и 5.

Пример

original = list(range(1, 21))
filtered = [x for x in original if x % 2 != 0 and x % 5 != 0]
print(filtered)

Результат:

[1, 3, 7, 9, 11, 13, 17, 19]

Эквивалентный цикл с continue:

Пример

result = []
for x in range(1, 21):
    if x % 2 == 0 or x % 5 == 0:
        continue
    result.append(x)
print(result)

Результат тот же.

Перейти к следующей итерации цикла в Python - comments

En
следующая итерация python (python)