Цикл 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)
⚠️ Частые ошибки
-
Изменение списка во время итерации
Не удаляйте/добавляйте элементы в перебираемый список — это приводит к неожиданным результатам.
Решение: Используйте копию списка (for item in list(my_list)). -
Ненужные индексы
Если не нужен индекс, не используйте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 спасёт вас! ✨