Перебор элементов в Python: методы и итерационные конструкции

Раздел: Управляющие конструкции -> Циклы и итерация

Основы итерации: цикл for

Как пройти по всем элементам последовательности в Python?

Наиболее универсальный и читаемый способ - использовать цикл for. Он автоматически вызывает итератор и завершается, когда элементы заканчиваются. Пример для списка:

fruits = ["яблоко", "банан", "вишня"]
for fruit in fruits:
    print(fruit)

перебор элементов python (перебор элементов в python)

Типичная ошибка - попытка изменить список во время итерации (например, удалить элемент). Это может привести к пропуску элементов или ошибке. Лучше создать копию: for fruit in fruits[:]:

Цикл for работает со строками, кортежами, множествами, файлами и любыми итерируемыми объектами.

Варианты перебора с дополнительными возможностями

Как получить индекс элемента во время итерации?

Функция enumerate() добавляет счётчик. По умолчанию старт с 0, можно изменить через аргумент start.

colors = ["красный", "зелёный", "синий"]
for idx, color in enumerate(colors, start=1):
    print(f"{idx}: {color}")

Ошибка: забыть распаковать кортеж (idx, color) - тогда переменная получит целый кортеж.

Как одновременно перебрать два или более списков?

Функция zip() объединяет элементы в кортежи. Итерация прекращается по самому короткому списку.

names = ["Анна", "Борис", "Виктор"]
scores = [85, 92, 78]
for name, score in zip(names, scores):
    print(f"{name}: {score}")

Если нужна итерация по самому длинному списку, используйте itertools.zip_longest().

Ошибка: несоответствие длин списков - без контроля можно потерять данные.

Как перебрать элементы в обратном порядке?

Функция reversed() возвращает обратный итератор. Работает с любыми последовательностями.

nums = [10, 20, 30, 40]
for x in reversed(nums):
    print(x)

Для словарей reversed() работает только с Python 3.8+ для упорядоченных ключей.

Как перебрать ключи, значения или пары словаря?

Методы .keys(), .values(), .items().

capitals = {"Россия": "Москва", "Франция": "Париж", "Италия": "Рим"}
for country, city in capitals.items():
    print(f"Столица {country} - {city}")

Изменение словаря во время итерации (добавление/удаление) вызовет ошибку RuntimeError.

Как выполнить цикл с условием досрочного выхода?

Операторы break и continue управляют потоком. break завершает цикл, continue переходит к следующей итерации.

for n in range(10):
    if n == 5:
        break
    if n % 2 == 0:
        continue
    print(n)

Вывод: 1, 3 (5 не печатается из-за break).

Ошибка: бесконечный цикл while без условия выхода; в for такое невозможно.

Как перебрать элементы с помощью while и собственного индекса?

Классический способ, полезный, когда нужно управлять шагом вручную.

i = 0
while i < len(fruits):
    print(fruits[i])
    i += 1

Случаи: итерация с изменением индекса (например, пропуск каждого второго).

Ошибка: забыть увеличить счётчик - бесконечный цикл.

Расширенные примеры перебора

Пример
# 1. Итерация с помощью iter() и next()
fruits = ["яблоко", "банан", "вишня"]
it = iter(fruits)
while True:
    try:
        fruit = next(it)
        print(fruit)
    except StopIteration:
        break
яблоко
банан
вишня
Пример
# 2. Объединение множеств с itertools.chain
import itertools
letters = ['a', 'b']
nums = [1, 2, 3]
for item in itertools.chain(letters, nums):
    print(item)
a
b
1
2
3
Пример
# 3. Бесконечный цикл с itertools.cycle (сигнал остановки - break)
import itertools
colors = ["красный", "зелёный", "синий"]
count = 0
for color in itertools.cycle(colors):
    if count == 7:
        break
    print(color)
    count += 1
красный
зелёный
синий
красный
зелёный
синий
красный
Пример
# 4. Срез итератора (itertools.islice)
import itertools
for num in itertools.islice(range(100), 10, 20):
    print(num, end=' ')
10 11 12 13 14 15 16 17 18 19
Пример
# 5. Вложенный перебор двумерного списка (матрицы)
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
for row in matrix:
    for val in row:
        print(val, end=' ')
    print()
1 2 3
4 5 6
7 8 9
Пример
# 6. Итерация по файлу построчно (эффективный способ)
with open('example.txt', 'w') as f:
    f.write('строка1\nстрока2\nстрока3')
with open('example.txt', 'r') as f:
    for line in f:
        print(line.strip())  # убираем символ новой строки
строка1
строка2
строка3
Пример
# 7. Генератор с yield (ленивый перебор)
def countdown(n):
    while n > 0:
        yield n
        n -= 1

for num in countdown(5):
    print(num)
5
4
3
2
1
Пример
# 8. Итерация с параллельным присваиванием и перебором ключей и значений
person = {'имя': 'Алиса', 'возраст': 30, 'город': 'Москва'}
for key, value in person.items():
    print(f"{key}: {value}")
имя: Алиса
возраст: 30
город: Москва

Перебор элементов в Python - comments

En
перебор элементов python (python)