Цикл for: перебор последовательностей

🔄 Что делает цикл for и зачем он нужен?

Цикл for в Python — это инструмент для автоматического перебора элементов любой последовательности (списка, строки, кортежа, словаря и т.д.).
Вместо ручного обращения к каждому элементу по индексу, он делает это за вас — быстро, безопасно и элегантно.

Пример проблемы без цикла:

fruits = ['яблоко', 'банан', 'груша']
print(fruits[0])  # яблоко
print(fruits[1])  # банан
print(fruits[2])  # груша

А теперь представьте список из 1000 элементов... 😱

Решение с циклом:

for fruit in fruits:
    print(fruit)  # Автоматически выведет все элементы!

📦 Как устроен цикл for?

Синтаксис прост:

for переменная in последовательность:
    # Код, который выполняется для каждого элемента

Разберём на примере:

numbers = [1, 2, 3, 4, 5]
for num in numbers:
    squared = num ** 2
    print(f"Квадрат {num} равен {squared}")

# Вывод:
# Квадрат 1 равен 1
# Квадрат 2 равен 4
# ...

🔹 Как это работает?
1. Python берёт первый элемент последовательности (1), присваивает его переменной num.
2. Выполняет блок кода внутри цикла.
3. Переходит к следующему элементу, пока элементы не закончатся.


🌟 Варианты перебора последовательностей

1. Списки

cities = ['Москва', 'Нью-Йорк', 'Токио']
for city in cities:
    print(f"Город: {city}")

2. Строки

Цикл перебирает каждый символ:

word = "Python"
for letter in word:
    print(letter)  # P, y, t, h, o, n

3. Словари

По умолчанию перебираются ключи:

user = {'name': 'Анна', 'age': 25, 'city': 'Москва'}
for key in user:
    print(f"Ключ: {key}, Значение: {user[key]}")

Совет от Данилы Бежина:
Используйте .items() для удобного перебора пар ключ-значение:

for key, value in user.items():
    print(f"{key}: {value}")

🛠 Продвинутые техники

1. range() — генератор последовательностей

Создаёт числа в заданном диапазоне:

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

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

2. enumerate() — доступ к индексам

Если нужен и элемент, и его индекс:

colors = ['красный', 'зелёный', 'синий']
for index, color in enumerate(colors):
    print(f"Цвет №{index + 1}: {color}")

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

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

matrix = [
    [1, 2, 3],
    [4, 5, 6]
]
for row in matrix:
    for num in row:
        print(num, end=' ')  # 1 2 3 4 5 6

💡 Практические примеры

Подсчёт суммы чисел

prices = [100, 200, 300]
total = 0
for price in prices:
    total += price
print(f"Итого: {total} руб.")  # Итого: 600 руб.

Поиск элементов

names = ['Алексей', 'Мария', 'Иван']
for name in names:
    if name.startswith('М'):
        print(f"Нашёл: {name}")  # Нашёл: Мария

Генерация HTML-списка (реальный кейс!)

items = ['Главная', 'О нас', 'Контакты']
html = "<ul>\n"
for item in items:
    html += f"  <li>{item}</li>\n"
html += "</ul>"
print(html)

⚠️ Частые ошибки

  1. Изменение списка во время итерации
    Не удаляйте/добавляйте элементы в перебираемый список — это приводит к неожиданным результатам.
    Решение: Используйте копию списка (for item in list(my_list)).

  2. Ненужные индексы
    Если не нужен индекс, не используйте range(len()):

# Плохо:
for i in range(len(fruits)):
    print(fruits[i])

# Хорошо:
for fruit in fruits:
    print(fruit)

🔥 Финал: сила for в одной строке

Циклы for можно использовать в генераторах списков для лаконичного кода:

squares = [x**2 for x in range(5)]  # [0, 1, 4, 9, 16]

Этот приём разбирает Данила Бежин в этом видео.

Главное правило: Если вам приходится повторять один и тот же код, меняя только значение переменной — цикл for спасёт вас! ✨

Скрыть рекламу навсегда

🧠 Учёба без воды и зубрёжки

Закрытый Boosty с наработками опытного преподавателя.

Объясняю сложное так, чтобы щелкнуло.

🚀 Забрать доступ к Boosty