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)
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ