JavaRush /Курсы /Модуль 1: Python Core /Циклы по списку

Циклы по списку

Модуль 1: Python Core
5 уровень , 5 лекция
Открыта

6.1 Цикл for

В Python циклы по элементам списка часто реализуются с помощью цикла for. Это один из самых часто используемых подходов к итерации по списку, позволяющий выполнить блок кода для каждого элемента в списке.

Основы цикла for

Цикл for в Python проходит по каждому элементу списка, временно присваивая значение текущего элемента переменной, указанной после ключевого слова for. Пример:


fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

Обход списка в обратном порядке можно реализовать с помощью срезов:


fruits = ["apple", "banana", "cherry"]
for fruit in fruits[::-1]:
    print(fruit)

6.2 Цикл for с индексами

Кроме обхода списка с помощью классического for, можно обойти список с помощью цикла for в сочетании с функцией range(). Это позволяет работать не только с самими элементами, но и с их позициями, что бывает необходимо при выполнении более сложных манипуляций с данными.

Основы индексированной итерации

Для итерации по списку с доступом к индексу каждого элемента можно использовать следующий подход:


my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
    print(f'Index: {i}, Element: {my_list[i]}')

Преимущества использования индексов

Использование индексов в циклах позволяет не только получать доступ к каждому элементу, но и изменять элементы списка на месте. Это особенно полезно, когда нужно модифицировать список во время итерации.

Пример:


my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
    my_list[i] = my_list[i] * 2

Примеры сложных манипуляций

С индексами легко реализовывать алгоритмы, которые требуют одновременного доступа к нескольким элементам списка, например, для сравнения текущего элемента с предыдущим или следующим:

Пример:


my_list = [3, 5, 2, 9, 4]
for i in range(1, len(my_list)):
    if my_list[i] > my_list[i - 1]:
        print(f'{my_list[i]} is greater than {my_list[i - 1]}')

6.3 Использование функции enumerate()

В Python функция enumerate() предоставляет удобный способ итерации по элементам списка с одновременным доступом к их индексам. Это особенно полезно, когда необходимо обрабатывать и индекс, и значение элемента списка в рамках цикла.

Основы функции enumerate()

Функция enumerate() оборачивает список в специальный объект и возвращает итератор, который производит кортежи (пары значений), состоящие из индекса и значения элемента:


my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
    print(f'Index: {index}, Element: {element}')

Теперь у вас есть не только элемент, но и его индекс.

Преимущества enumerate()

Использование enumerate() делает код более читабельным и позволяет избежать необходимости вручную управлять индексами с помощью range(len(...)). Это упрощает манипуляции с элементами списка, такие как изменение, доступ к элементам и выполнение условных проверок.

Примеры использования

enumerate() идеально подходит для задач, где требуется одновременно изменять элементы списка или сравнивать элементы с их индексами:


my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
    if index % 2 == 0:
        print(f'Element {element} at even index {index}')

6.4 Цикл while

Мы обсудили for, а теперь давайте поговорим о цикле while. Этот цикл также может быть полезен при работе с элементами списка.

Напоминаю, что цикл while начинает свою работу с проверки условия. Если условие истинно, выполняется тело цикла, а затем условие проверяется снова. Процесс повторяется до тех пор, пока условие не станет ложным.

Пример итерации по списку

Допустим, у вас есть список чисел, и вы хотите итерировать через него, пока не столкнетесь с определенным значением:


numbers = [1, 2, 3, 4, 5, -1, 6]
i = 0
while i < len(numbers) and numbers[i] != -1:
    print(numbers[i])
    i += 1

Не сильно отличается от цикла for, не так ли? Но есть случаи, где нам не нужно использовать индекс, чтобы работать с элементами списка. Например, в списке хранятся некоторые задания, их нужно по одному из списка доставать, выполнять и удалять из списка.

Этот код схематично можно было бы записать так:


tasks = [1, 2, 3, 4, 5, -1, 6]
while len(tasks) > 0:
    task = tasks.pop()
    print(task)
2
Задача
Модуль 1: Python Core, 5 уровень, 5 лекция
Недоступна
Лес
Лес
2
Задача
Модуль 1: Python Core, 5 уровень, 5 лекция
Недоступна
Четкий список
Четкий список
Комментарии (13)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Mongoose Уровень 16
6 ноября 2025
tasks = [1, 2, 3, 4, 5, -1, 6] while len(tasks) > 0: task = tasks.pop() print(task) Например, в списке хранятся некоторые задания, их нужно по одному из списка доставать, выполнять и удалять из списка. Доставать и выполнять с конца списка...
Pavel Khaliullin Уровень 11
9 сентября 2025
Чёт то ли сайт глючит, то ли я: Я ещё другое решение предлагал с enumerate(), его тоже не принял. Хотя выводит, вроде, то что просили.
10 июля 2025
my_list= [i+1 for i in range (10)] for index, element in enumerate(my_list): if element % 2 == 0: my_list[index] = "четное" print (my_list)
Tatiana Уровень 2
6 июня 2025
for i in range(len(my_list)): if my_list[i] % 2 == 0: my_list[i] = "четное"
DmUr Уровень 16
4 июня 2025
Убедитесь, что все элементы списка являются названиями деревьев. 'тюльпан', 'банан' и 'гжель' не являются деревьями. РЖУНИМАГУ !!!
Simona Hub Уровень 11
13 мая 2025
ошибка задачи : Список должен содержать названия деревьев, а не фруктов. весело...
SWK Уровень 26
20 марта 2025
Уместно было бы пояснить, почему не работает так:

for item in result:
    if item % 2 ==0:
        item = "четное"
Анастасия Радостная Уровень 24 Expert
12 мая 2025
Понимаю, что для вас это уже неактуально, но вдруг у кого-то такой же вопрос:) Ваш подход не работает из-за особенностей работы цикла for по списку: В вашем коде for item in result: переменная item временно содержит значение текущего элемента списка. При присвоении item = "четное" вы изменяете только значение этой локальной переменной item, а не сам элемент в списке result. Поскольку item - это копия значения элемента списка, изменение item не отражается в списке result.
Long_byte Уровень 55
10 июня 2025
нужно проверять не по значению а по индексу
_den Уровень 65
17 февраля 2025
как-то так)

['Дерево-'+str(i) for i in range(10)]

['Дерево-0', 'Дерево-1', 'Дерево-2', 'Дерево-3', 'Дерево-4', 'Дерево-5', 'Дерево-6', 'Дерево-7', 'Дерево-8', 'Дерево-9']
Павел Демьянов Уровень 1
16 января 2025
прикольная пасхалка про фрукты)
Александр Уровень 19 Expert
5 января 2025
неправильный способ решения последней задачи:

l = [1, 3, 4, 2, 0, 1, 6, 2, 5, 3]
l = ["четное" if e % 2 == 0 else e for e in l]
print(l)
просто интересно, что можно и так ))) (это не фрагмент, это все решение) но про этот способ расскажут на следующем уроке )))
Simona Hub Уровень 11
13 мая 2025
результат будет [1, 3, 'четное', 'четное', 'четное', 1, 'четное', 'четное', 5, 3] а вроде нужно: [1, 'четное', 3, 'четное', 5, 'четное', 7, 'четное', 9, 'четное'] в чем смысл ? не нужно делать то что еще не прошли )) for index, element in enumerate(numbers): if element % 2 == 0: numbers[index] = "четное"