← Назад к вопросам

Что такое for?

1.6 Junior🔥 241 комментариев
#DevOps и инфраструктура#Django

Комментарии (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 цикл:

  1. Используется для итерации по последовательностям
  2. Более простой и безопасный, чем while для коллекций
  3. Поддерживает break, continue, else
  4. Работает с enumerate(), zip(), range()
  5. Можно оптимизировать через List Comprehension
  6. Предпочтительнее while для большинства случаев

Овладение циклом for - это основа любого программирования на Python!

Что такое for? | PrepBro