Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Итерирование по списку в Python
Итерирование (обход) списка — одна из самых базовых операций. Python предоставляет множество способов для различных сценариев.
1. Простой цикл for
Самый распространённый и читаемый способ:
fruits = ["яблоко", "груша", "апельсин"]
for fruit in fruits:
print(fruit)
# Вывод:
# яблоко
# груша
# апельсин
2. Доступ по индексу с range()
Когда нужен индекс элемента:
fruits = ["яблоко", "груша", "апельсин"]
for i in range(len(fruits)):
print(f"Индекс {i}: {fruits[i]}")
# Вывод:
# Индекс 0: яблоко
# Индекс 1: груша
# Индекс 2: апельсин
3. Функция enumerate()
Получай индекс и значение одновременно (рекомендуется):
fruits = ["яблоко", "груша", "апельсин"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
# С начальным значением индекса:
for index, fruit in enumerate(fruits, start=1):
print(f"{index}: {fruit}")
# Вывод:
# 1: яблоко
# 2: груша
# 3: апельсин
4. List comprehension
Для создания нового списка на основе существующего:
numbers = [1, 2, 3, 4, 5]
# Умножить каждое число на 2
squares = [x * 2 for x in numbers]
print(squares) # [2, 4, 6, 8, 10]
# С условием
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers) # [2, 4]
5. Итератор iter() и next()
Для низкоуровневого управления итерацией:
numbers = [1, 2, 3]
iterator = iter(numbers)
print(next(iterator)) # 1
print(next(iterator)) # 2
print(next(iterator)) # 3
# print(next(iterator)) # StopIteration exception
6. Функция map()
Применить функцию ко всем элементам:
numbers = [1, 2, 3, 4, 5]
# Возводим в квадрат
squares = list(map(lambda x: x ** 2, numbers))
print(squares) # [1, 4, 9, 16, 25]
# С функцией:
def double(x):
return x * 2
doubled = list(map(double, numbers))
print(doubled) # [2, 4, 6, 8, 10]
7. Функция filter()
Отфильтровать элементы по условию:
numbers = [1, 2, 3, 4, 5, 6]
# Только чётные
even = list(filter(lambda x: x % 2 == 0, numbers))
print(even) # [2, 4, 6]
8. Функция zip()
Проходить по нескольким спискам одновременно:
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
cities = ["NYC", "LA", "Chicago"]
for name, age, city in zip(names, ages, cities):
print(f"{name}, {age} лет, живет в {city}")
# Вывод:
# Alice, 25 лет, живет в NYC
# Bob, 30 лет, живет в LA
# Charlie, 35 лет, живет в Chicago
9. Обратный порядок с reversed()
fruits = ["яблоко", "груша", "апельсин"]
for fruit in reversed(fruits):
print(fruit)
# Вывод:
# апельсин
# груша
# яблоко
10. Сравнение методов
| Метод | Когда использовать | Производительность |
|---|---|---|
for x in list | Базовое итерирование | Быстрый |
for i, x in enumerate() | Нужен индекс | Быстрый |
for i in range(len()) | Нужна гибкость с индексом | Быстрый |
list comprehension | Создание нового списка | Очень быстрый |
map() / filter() | Функциональный стиль | Быстрый |
zip() | Несколько списков | Быстрый |
Лучшие практики
# Правильно: enumerate для индекса и значения
for i, item in enumerate(items):
print(i, item)
# Неправильно: range(len()) когда нужен только элемент
for i in range(len(items)):
print(items[i])
# Правильно: list comprehension для преобразования
result = [transform(x) for x in items]
# Неправильно: пустой список и append в цикле
result = []
for x in items:
result.append(transform(x))
Выбор метода зависит от задачи, но в большинстве случаев простой for-цикл с enumerate() — это правильный выбор.