Итерации с циклом for: основы и продвинутые техники
Цикл с параметром в Python: основы и синтаксис
Основной способ: цикл for с range()
Цикл for в Python позволяет многократно выполнять блок кода, последовательно перебирая элементы итерируемого объекта. Самый распространенный вариант - использование функции range(), которая генерирует числовую последовательность.
for i in range(5):
print(i)значение range в python (значение range() в python)
0 1 2 3 4
значение while в python (значение while в python)
Здесь range(5) создает числа от 0 до 4 (включительно левая граница, правая не включена). Цикл выполняется 5 раз, переменная i на каждой итерации принимает следующее значение.
Типичные ошибки:
- Забыть, что
range(n)дает значения от 0 до n-1. Если нужно включить n, пишитеrange(n+1). - Изменять коллекцию внутри цикла - может привести к пропуску элементов или ошибкам (лучше копировать).
- Не использовать
breakилиcontinueтам, где это повышает читаемость.
Как перебрать элементы списка?
Простейший способ - передать список напрямую:
fruits = ['яблоко', 'банан', 'вишня']
for fruit in fruits:
print(fruit)цикл с параметром в python (цикл с параметром в python)
яблоко банан вишня
цикл while python пример (пример цикла while в python)
Переменная fruit на каждой итерации получает значение текущего элемента. Такой подход удобен, когда индексы не нужны.
Как получить индекс элемента вместе со значением?
Функция enumerate() добавляет счетчик:
fruits = ['яблоко', 'банан', 'вишня']
for index, fruit in enumerate(fruits):
print(index, fruit)алгоритм while python (цикл while в python)
0 яблоко 1 банан 2 вишня
Python бесконечный (бесконечный цикл while в python)
По умолчанию счет начинается с 0. Можно задать другое начальное значение - enumerate(fruits, start=1).
Как перебрать ключи и значения словаря?
Метод items() возвращает пары (ключ, значение):
person = {'name': 'Anna', 'age': 25}
for key, value in person.items():
print(key, value)какие циклы существуют в python (какие циклы существуют в python?)
name Anna age 25
команда break в python (оператор break в python)
Возможные проблемы:
- Порядок ключей гарантирован начиная с Python 3.7 (как вставка). В более старых версиях порядок мог отличаться.
- Изменение словаря во время итерации (добавление/удаление ключей) приведет к ошибке
RuntimeError.
Как перебрать символы строки?
Строка - итерируемый объект, каждая итерация возвращает один символ:
text = 'Привет'
for char in text:
print(char)программирование циклических алгоритмов python (циклические алгоритмы в python)
П р и в е т
Как одновременно перебрать несколько последовательностей?
Функция zip() объединяет элементы из разных коллекций по индексам:
names = ['Tom', 'Jerry']
scores = [90, 85]
for name, score in zip(names, scores):
print(name, score)
Tom 90 Jerry 85
Важный нюанс:
Если последовательности разной длины, zip() обрывается на самой короткой. Чтобы обработать все элементы, используйте zip_longest() из модуля itertools.
Как выполнить блок только если цикл завершился без break?
Конструкция for...else запускает блок else, если цикл не был прерван оператором break:
numbers = [1, 2, 3, 4, 5]
for n in numbers:
if n == 6:
print('Найдено!')
break
else:
print('Число 6 не найдено')
Число 6 не найдено
Часто используется для поиска элемента: если break не сработал, значит элемент отсутствует.
Как создать вложенный цикл?
Цикл внутри цикла полезен для работы с многомерными структурами:
matrix = [[1, 2], [3, 4]]
for row in matrix:
for element in row:
print(element, end=' ')
1 2 3 4
Как использовать break и continue для управления итерацией?
break полностью прерывает цикл, continue переходит к следующей итерации:
for i in range(10):
if i == 5:
break
if i % 2 == 0:
continue
print(i)
1 3
Выводятся нечетные числа до 5, после 5 цикл остановлен.
Частая ошибка:
Забыть, что continue пропускает оставшийся код итерации, но не завершает цикл. Также break и continue работают только в ближайшем вложенном цикле.
Как заменить цикл генератором списка (list comprehension)?
Генератор списка - компактная альтернатива, когда нужно создать новую коллекцию:
squares = [x**2 for x in range(10)]
print(squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Это эквивалентно циклу for с добавлением элементов в список, но читается лаконичнее.
Расширенные примеры использования цикла for
Пример 1: range с началом, концом и шагом
Функция range(start, stop, step) позволяет задать произвольные границы и шаг.
for i in range(2, 11, 2):
print(i, end=' ')
2 4 6 8 10
Шаг может быть отрицательным для обратного порядка:
for i in range(10, 0, -2):
print(i, end=' ')
10 8 6 4 2
Пример 2: enumerate с пользовательским начальным индексом
Параметр start задает стартовое значение счетчика:
colors = ['red', 'green', 'blue']
for idx, color in enumerate(colors, start=1):
print(f'{idx}. {color}')
1. red 2. green 3. blue
Пример 3: zip с разной длиной последовательностей
Если одна коллекция короче, лишние элементы отбрасываются. Чтобы сохранить все, используйте itertools.zip_longest:
from itertools import zip_longest
list1 = [1, 2, 3]
list2 = ['a', 'b']
for a, b in zip_longest(list1, list2, fillvalue='None'):
print(a, b)
1 a 2 b 3 None
Пример 4: Вложенный цикл для создания таблицы умножения
for i in range(1, 10):
for j in range(1, 10):
print(f'{i} x {j} = {i*j:2}', end=' ')
print()
1 x 1 = 1 1 x 2 = 2 ... 2 x 1 = 2 2 x 2 = 4 ... ... 9 x 9 = 81
(результат сокращен)
Пример 5: Построчное чтение файла с циклом
with open('example.txt', 'r') as file:
for line in file:
print(line.strip())
Файл читается построчно без полной загрузки в память, что эффективно для больших файлов.
Пример 6: Использование else с циклом для поиска
numbers = [1, 3, 5, 7, 9]
search = 4
for n in numbers:
if n == search:
print(f'Найдено: {n}')
break
else:
print(f'{search} отсутствует')
4 отсутствует
Пример 7: Генератор списка с условием (замена цикла)
even_squares = [x**2 for x in range(20) if x % 2 == 0]
print(even_squares)
[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]
Это позволяет создать список квадратов четных чисел без явного цикла.