Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
for: Цикл итерации в Python
for - это один из основных операторов Python для итерации по последовательностям (списки, кортежи, строки, наборы, словари). Это конструкция, которая повторяет блок кода для каждого элемента в коллекции.
Синтаксис for
for переменная in последовательность:
# блок кода, который выполняется для каждого элемента
Простой пример
# Цикл по списку
chisla = [1, 2, 3, 4, 5]
for chislo in chisla:
print(chislo) # Выведет: 1, 2, 3, 4, 5 (на разных строках)
# Цикл по строке
for bukva in "Hello":
print(bukva) # Выведет: H, e, l, l, o (по одной букве)
# Цикл по диапазону
for i in range(5):
print(i) # Выведет: 0, 1, 2, 3, 4
range() - функция для создания последовательности
range() генерирует последовательность чисел. Это самый частый способ итерации по индексам:
# range(stop)
for i in range(5):
print(i) # 0, 1, 2, 3, 4
# range(start, stop)
for i in range(2, 8):
print(i) # 2, 3, 4, 5, 6, 7 (8 не включается)
# range(start, stop, step)
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8
for i in range(10, 0, -1):
print(i) # 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 (в обратном порядке)
Цикл с индексом: enumerate()
Если нужен индекс и значение одновременно, используй enumerate():
fruits = ['apple', 'banana', 'cherry']
# Без enumerate (старый способ)
for i in range(len(fruits)):
print(i, fruits[i]) # 0 apple, 1 banana, 2 cherry
# С enumerate (современный способ)
for index, fruit in enumerate(fruits):
print(index, fruit) # 0 apple, 1 banana, 2 cherry
# С указанием начального индекса
for index, fruit in enumerate(fruits, start=1):
print(index, fruit) # 1 apple, 2 banana, 3 cherry
Цикл по словарю
person = {'name': 'John', 'age': 30, 'city': 'New York'}
# По ключам (по умолчанию)
for key in person:
print(key) # name, age, city
# По ключам явно
for key in person.keys():
print(key) # name, age, city
# По значениям
for value in person.values():
print(value) # John, 30, New York
# По ключам и значениям
for key, value in person.items():
print(f"{key}: {value}") # name: John, age: 30, city: New York
break: выход из цикла
# Выход из цикла при условии
for i in range(10):
if i == 5:
break # Выход из цикла
print(i) # Выведет: 0, 1, 2, 3, 4
# Поиск элемента
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for num in numbers:
if num == 5:
print(f"Найден: {num}")
break # Выход после нахождения
continue: пропуск итерации
# Пропуск четных чисел
for i in range(10):
if i % 2 == 0:
continue # Пропустить эту итерацию
print(i) # Выведет: 1, 3, 5, 7, 9
# Пропуск нежелательных элементов
users = ['admin', 'john', 'jane', 'moderator', 'bob']
for user in users:
if user in ['admin', 'moderator']:
continue # Пропустить админов
print(f"Обычный пользователь: {user}")
else в цикле for
Оператор else выполняется, если цикл завершился нормально (без break):
# Цикл без break - выполнится else
for i in range(5):
print(i)
else:
print("Цикл завершен без break") # Это выведется
# Цикл с break - else не выполнится
for i in range(10):
if i == 3:
print("Нашли 3, выходим")
break
else:
print("Это не выведется, потому что был break")
# Практический пример: поиск в списке
def find_user(users, target):
for user in users:
if user == target:
return f"Пользователь {target} найден"
else:
# else в цикле - элемент не найден
return f"Пользователь {target} не найден"
result = find_user(['alice', 'bob', 'charlie'], 'bob')
print(result) # Пользователь bob найден
Вложенные циклы (nested loops)
# Таблица умножения
for i in range(1, 4):
for j in range(1, 4):
print(f"{i} * {j} = {i*j}")
# 1 * 1 = 1, 1 * 2 = 2, 1 * 3 = 3
# 2 * 1 = 2, 2 * 2 = 4, 2 * 3 = 6
# 3 * 1 = 3, 3 * 2 = 6, 3 * 3 = 9
# Работа с вложенными списками
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for row in matrix:
for cell in row:
print(cell, end=' ') # 1 2 3 4 5 6 7 8 9
zip: параллельная итерация по двум последовательностям
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
# Итерировать по двум спискам одновременно
for name, age in zip(names, ages):
print(f"{name}: {age} лет") # Alice: 25 лет, Bob: 30 лет, Charlie: 35 лет
# zip останавливается на самом коротком списке
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30] # Коротче
for name, age in zip(names, ages):
print(f"{name}: {age}") # Alice: 25, Bob: 30 (Charlie пропущен)
List Comprehension: сокращённая форма цикла
List Comprehension - это компактный способ создать новый список через цикл:
# Обычный цикл
squares = []
for i in range(5):
squares.append(i**2)
print(squares) # [0, 1, 4, 9, 16]
# List Comprehension (то же самое, но короче)
squares = [i**2 for i in range(5)]
print(squares) # [0, 1, 4, 9, 16]
# С условием
even_squares = [i**2 for i in range(10) if i % 2 == 0]
print(even_squares) # [0, 4, 16, 36, 64]
# С преобразованием
names = ['alice', 'bob', 'charlie']
capitalized = [name.capitalize() for name in names]
print(capitalized) # ['Alice', 'Bob', 'Charlie']
Производительность: for vs while
# for (лучше для коллекций)
for item in items:
print(item)
# while (для условий)
i = 0
while i < len(items):
print(items[i])
i += 1
# for всегда предпочтительнее для итерации по коллекциям!
Частые ошибки
# ОШИБКА 1: изменение списка во время итерации
items = [1, 2, 3, 4, 5]
for item in items:
if item == 3:
items.remove(item) # Опасно! Может пропустить элементы
# ИСПРАВЛЕНИЕ: используй копию
for item in items.copy(): # Итерируем по копии
if item == 3:
items.remove(item) # Удаляем из оригинала
# ОШИБКА 2: забыли двоеточие
for i in range(5) # Синтаксическая ошибка: нет :
print(i)
# ИСПРАВЛЕНИЕ:
for i in range(5): # Правильно
print(i)
# ОШИБКА 3: неправильный отступ
for i in range(5):
print(i) # IndentationError: должен быть отступ
# ИСПРАВЛЕНИЕ:
for i in range(5):
print(i) # Правильный отступ
for vs while: когда что использовать
# for - когда знаем количество итераций
for i in range(10): # 10 итераций
print(i)
for item in items: # Для каждого элемента
print(item)
# while - когда итерируем по условию
user_input = ""
while user_input != "exit":
user_input = input("Введите команду: ")
print(f"Вы ввели: {user_input}")
Вывод
for цикл:
- Используется для итерации по последовательностям
- Более простой и безопасный, чем while для коллекций
- Поддерживает break, continue, else
- Работает с enumerate(), zip(), range()
- Можно оптимизировать через List Comprehension
- Предпочтительнее while для большинства случаев
Овладение циклом for - это основа любого программирования на Python!