Базовый синтаксис
Python
For переменная_итерации in итерируемый_объект:
# Блок кода, который будет выполняться для каждого элемента
# Используйте 'переменная_итерации' для доступа к текущему элементу
Разбор:
- Итерируемый_объект: Это любой объект, по которому можно итерировать. Это может быть:
- Списки (List) Кортежи (Tuple) Строки (Str) Множества (Set) Словари (Dict) (итерирует по ключам по умолчанию) Объекты Range() Файловые объекты Любой другой объект, который реализует протокол итератора (например, объекты, созданные генераторами).
Переменная_итерации: На каждой итерации цикла ей будет присваиваться следующий элемент из итерируемого_объекта. Блок кода: Это отступы, которые определяют тело цикла. Весь код с этим отступом будет выполняться для каждого элемента.
Как это работает "под капотом" (упрощенно)
Когда Python встречает цикл for, он делает следующее:
Получает Итератор для итерируемого_объекта (по сути, "указатель" на начало последовательности). На каждой итерации вызывает метод next() у этого итератора. Результат next() присваивается переменной_итерации. Выполняет блок кода внутри цикла. Повторяет шаги 2-4 до тех пор, пока next() не вызовет исключение StopIteration. Это исключение сигнализирует о том, что элементов больше нет, и цикл завершается.
Вам не нужно беспокоиться об этих низкоуровневых деталях, Python делает это за вас!
Примеры использования for
1. Перебор списка
Python
Fruits = ["apple", "banana", "cherry"]
For fruit in fruits:
print(f"Мне нравится {fruit}")
# Вывод:
# Мне нравится apple
# Мне нравится banana
# Мне нравится cherry
2. Перебор строки
Python
Word = "Python"
For char in word:
print(char)
# Вывод:
# P
# y
# t
# h
# o
# n
3. Перебор чисел с помощью range()
Функция range() генерирует последовательность чисел. Это очень часто используется, когда вам нужно выполнить действие определенное количество раз или итерировать по индексам.
- range(stop): Генерирует числа от 0 до stop-1. range(start, stop): Генерирует числа от start до stop-1. range(start, stop, step): Генерирует числа от start до stop-1 с указанным шагом.
Python
# От 0 до 4
For i in range(5):
print(f"Число: {i}")
# Вывод:
# Число: 0
# Число: 1
# Число: 2
# Число: 3
# Число: 4
# От 2 до 5
For i in range(2, 6):
print(f"i = {i}")
# Вывод:
# i = 2
# i = 3
# i = 4
# i = 5
# От 10 до 0 с шагом -2
For i in range(10, 0, -2):
print(f"Обратный отсчет: {i}")
# Вывод:
# Обратный отсчет: 10
# Обратный отсчет: 8
# Обратный отсчет: 6
# Обратный отсчет: 4
# Обратный отсчет: 2
4. Перебор словаря
По умолчанию, при итерации по словарю, вы перебираете его Ключи.
Python
Student_grades = {
"Alice": 95,
"Bob": 88,
"Charlie": 92
}
# Перебор ключей
For name in student_grades:
print(f"Имя: {name}")
# Перебор значений
For grade in student_grades. values():
print(f"Оценка: {grade}")
# Перебор пар ключ-значение (рекомендуется)
For name, grade in student_grades. items():
print(f"У {name} оценка {grade}")
# Вывод (для items()):
# У Alice оценка 95
# У Bob оценка 88
# У Charlie оценка 92
5. Использование enumerate() (для доступа к индексу и значению)
Если вам нужен как элемент, так и его индекс, используйте enumerate().
Python
Colors = ["red", "green", "blue"]
For index, color in enumerate(colors):
print(f"Цвет на позиции {index}: {color}")
# Вывод:
# Цвет на позиции 0: red
# Цвет на позиции 1: green
# Цвет на позиции 2: blue
Break и continue в цикле for
- Break: Полностью прерывает выполнение цикла и выходит из него. Continue: Пропускает оставшуюся часть текущей итерации и переходит к следующей.
Python
Numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Print("Пример с continue:")
For num in numbers:
if num % 2 != 0: # Если число нечетное
continue # Пропускаем остаток этой итерации
print(f"Четное число: {num}")
# Вывод: 2, 4, 6, 8, 10
Print("\nПример с break:")
For num in numbers:
if num > 5:
break # Прерываем цикл, если число больше 5
print(f"Число до 5: {num}")
# Вывод: 1, 2, 3, 4, 5
Else блок в цикле for
Цикл for в Python может иметь необязательный блок else, который выполняется, если цикл завершился Без вызова Break.
Python
For i in range(5):
print(i)
Else:
print("Цикл завершился без break.")
# Вывод: 0, 1, 2, 3, 4, Цикл завершился без break.
For i in range(5):
print(i)
if i == 2:
break
Else:
print("Этот блок не будет выполнен, потому что был break.")
# Вывод: 0, 1, 2
В целом, цикл for в Python — это мощный и гибкий инструмент для итерации по коллекциям, который делает код чистым и читаемым.