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

Как проитерироваться по списку?

1.0 Junior🔥 141 комментариев
#Python Core

Комментарии (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() — это правильный выбор.

Как проитерироваться по списку? | PrepBro