Итерации с циклом for: основы и продвинутые техники

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

Цикл с параметром в Python: основы и синтаксис

Основной способ: цикл for с range()

Цикл for в Python позволяет многократно выполнять блок кода, последовательно перебирая элементы итерируемого объекта. Самый распространенный вариант - использование функции range(), которая генерирует числовую последовательность.

for i in range(5):
    print(i)

значение range в python (значение range() в python)

0
1
2
3
4

значение while в python (значение while в python)

Здесь range(5) создает числа от 0 до 4 (включительно левая граница, правая не включена). Цикл выполняется 5 раз, переменная i на каждой итерации принимает следующее значение.

Типичные ошибки:

  • Забыть, что range(n) дает значения от 0 до n-1. Если нужно включить n, пишите range(n+1).
  • Изменять коллекцию внутри цикла - может привести к пропуску элементов или ошибкам (лучше копировать).
  • Не использовать break или continue там, где это повышает читаемость.

Как перебрать элементы списка?

Простейший способ - передать список напрямую:

fruits = ['яблоко', 'банан', 'вишня']
for fruit in fruits:
    print(fruit)

цикл с параметром в python (цикл с параметром в python)

яблоко
банан
вишня

цикл while python пример (пример цикла while в python)

Переменная fruit на каждой итерации получает значение текущего элемента. Такой подход удобен, когда индексы не нужны.

Как получить индекс элемента вместе со значением?

Функция enumerate() добавляет счетчик:

fruits = ['яблоко', 'банан', 'вишня']
for index, fruit in enumerate(fruits):
    print(index, fruit)

алгоритм while python (цикл while в python)

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

Python бесконечный (бесконечный цикл while в python)

По умолчанию счет начинается с 0. Можно задать другое начальное значение - enumerate(fruits, start=1).

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

Метод items() возвращает пары (ключ, значение):

person = {'name': 'Anna', 'age': 25}
for key, value in person.items():
    print(key, value)

какие циклы существуют в python (какие циклы существуют в python?)

name Anna
age 25

команда break в python (оператор break в python)

Возможные проблемы:

  • Порядок ключей гарантирован начиная с Python 3.7 (как вставка). В более старых версиях порядок мог отличаться.
  • Изменение словаря во время итерации (добавление/удаление ключей) приведет к ошибке RuntimeError.

Как перебрать символы строки?

Строка - итерируемый объект, каждая итерация возвращает один символ:

text = 'Привет'
for char in text:
    print(char)

программирование циклических алгоритмов python (циклические алгоритмы в python)

П
р
и
в
е
т

Как одновременно перебрать несколько последовательностей?

Функция zip() объединяет элементы из разных коллекций по индексам:

names = ['Tom', 'Jerry']
scores = [90, 85]
for name, score in zip(names, scores):
    print(name, score)
Tom 90
Jerry 85

Важный нюанс:

Если последовательности разной длины, zip() обрывается на самой короткой. Чтобы обработать все элементы, используйте zip_longest() из модуля itertools.

Как выполнить блок только если цикл завершился без break?

Конструкция for...else запускает блок else, если цикл не был прерван оператором break:

numbers = [1, 2, 3, 4, 5]
for n in numbers:
    if n == 6:
        print('Найдено!')
        break
else:
    print('Число 6 не найдено')
Число 6 не найдено

Часто используется для поиска элемента: если break не сработал, значит элемент отсутствует.

Как создать вложенный цикл?

Цикл внутри цикла полезен для работы с многомерными структурами:

matrix = [[1, 2], [3, 4]]
for row in matrix:
    for element in row:
        print(element, end=' ')
1 2 3 4

Как использовать break и continue для управления итерацией?

break полностью прерывает цикл, continue переходит к следующей итерации:

for i in range(10):
    if i == 5:
        break
    if i % 2 == 0:
        continue
    print(i)
1
3

Выводятся нечетные числа до 5, после 5 цикл остановлен.

Частая ошибка:

Забыть, что continue пропускает оставшийся код итерации, но не завершает цикл. Также break и continue работают только в ближайшем вложенном цикле.

Как заменить цикл генератором списка (list comprehension)?

Генератор списка - компактная альтернатива, когда нужно создать новую коллекцию:

squares = [x**2 for x in range(10)]
print(squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Это эквивалентно циклу for с добавлением элементов в список, но читается лаконичнее.

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

Пример 1: range с началом, концом и шагом

Функция range(start, stop, step) позволяет задать произвольные границы и шаг.

Пример
for i in range(2, 11, 2):
    print(i, end=' ')
2 4 6 8 10

Шаг может быть отрицательным для обратного порядка:

Пример
for i in range(10, 0, -2):
    print(i, end=' ')
10 8 6 4 2

Пример 2: enumerate с пользовательским начальным индексом

Параметр start задает стартовое значение счетчика:

Пример
colors = ['red', 'green', 'blue']
for idx, color in enumerate(colors, start=1):
    print(f'{idx}. {color}')
1. red
2. green
3. blue

Пример 3: zip с разной длиной последовательностей

Если одна коллекция короче, лишние элементы отбрасываются. Чтобы сохранить все, используйте itertools.zip_longest:

Пример
from itertools import zip_longest
list1 = [1, 2, 3]
list2 = ['a', 'b']
for a, b in zip_longest(list1, list2, fillvalue='None'):
    print(a, b)
1 a
2 b
3 None

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

Пример
for i in range(1, 10):
    for j in range(1, 10):
        print(f'{i} x {j} = {i*j:2}', end='  ')
    print()
1 x 1 =  1  1 x 2 =  2  ...
2 x 1 =  2  2 x 2 =  4  ...
...
9 x 9 = 81

(результат сокращен)

Пример 5: Построчное чтение файла с циклом

Пример
with open('example.txt', 'r') as file:
    for line in file:
        print(line.strip())

Файл читается построчно без полной загрузки в память, что эффективно для больших файлов.

Пример 6: Использование else с циклом для поиска

Пример
numbers = [1, 3, 5, 7, 9]
search = 4
for n in numbers:
    if n == search:
        print(f'Найдено: {n}')
        break
else:
    print(f'{search} отсутствует')
4 отсутствует

Пример 7: Генератор списка с условием (замена цикла)

Пример
even_squares = [x**2 for x in range(20) if x % 2 == 0]
print(even_squares)
[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]

Это позволяет создать список квадратов четных чисел без явного цикла.

Цикл с параметром в Python - comments

En
цикл с параметром в python (python)