В данной статье разберём задачу, в которой нам нужно вывести все элементы списка, которые находятся на чётных индексах, начиная с индекс 0 (0, 2, 4, 6 и т.д.). Рассмотрим несколько методов решения. Начнём с цикла for, а после разберём решения с помощью генератора списков, срезов и функции filter()
.
Использование цикла for
Использование цикла for
является одним из наиболее простых способов вывести элементы с четным индексом из списка в Python. Мы можем пройтись по каждому индексу списка, проверить индекс на четность с помощью оператора получения остатка от деления — %
. И если индекс четный, то вывести элемент, находящийся на нём. Давайте сначала посмотрим на код, а после разберём его работу.
Пример кода
# Исходный список
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Вывод элементов с четным индексом
print("Элементы с четным индексом:")
for i in range(len(numbers)):
if i % 2 == 0:
print(numbers[i])
Объяснение кода
- Сначала создается список
numbers
, содержащий целые числа от 1 до 9. - Затем мы итерируемся по длине списка
numbers
с помощьюrange(len(numbers))
. Это позволяет нам получить доступ к каждому индексу списка. - На каждой итерации цикла мы проверяем, четный ли индекс с помощью операции остатка от деления
i % 2 == 0
. Если индекс четный, условие выполняется. - Если индекс четный, мы выводим элемент списка
numbers
по этому индексу с помощьюprint(numbers[i])
.
Использование генератора списков
Тот же подход мы можем использовать для решения задачи с помощью генератора списков. Этот способ имеет более компактный код. Давайте посмотрим на него, а после разберём как он работает.
Пример кода
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Используем генератор списка для выбора элементов с четными индексами
even_index_elements = [numbers[i] for i in range(len(numbers)) if i % 2 == 0]
print(even_index_elements) # Вывод: [1, 3, 5, 7, 9]
Объяснение кода
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
: Создается исходный списокnumbers
, содержащий числа от 1 до 9.even_index_elements = [numbers[i] for i in range(len(numbers)) if i % 2 == 0]
:for i in range(len(numbers))
: Циклfor
перебирает индексы элементов исходного спискаnumbers
.if i % 2 == 0
: Условное выражение проверяет, является ли текущий индекс четным.numbers[i]
: Выражение выбирает элемент спискаnumbers
по текущему индексуi
.- Эти шаги объединены в генераторе списка, который создает новый список
even_index_elements
из элементовnumbers
, у которых четные индексы.
print(even_index_elements)
: Выводится новый списокeven_index_elements
, содержащий элементы с четными индексами из исходного спискаnumbers
.
Использование срезов
Решить нашу задачу можно ещё более простым способом. Для этого нам достаточно использовать срезы строк. Нам достаточно взять первый элемент списка, а далее выбрать все остальные с шагом 2. Давайте посмотрим на код.
Пример кода
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Используем срезы для выбора элементов с четными индексами
even_index_elements = numbers[::2]
print("Элементы с четными индексами:", even_index_elements)
Объяснение кода
- Определение списка
numbers
:
Сначала определяется списокnumbers
, который содержит целочисленные значения от 1 до 9. - Использование среза для выбора элементов с четными индексами:
В строке кодаeven_index_elements = numbers[::2]
используется срезnumbers[::2]
. Срез начинается с первого элемента спискаnumbers
(индекс 0), а шаг равен 2, что означает, что каждый второй элемент будет включен в результат. Таким образом, срез выбирает элементы спискаnumbers
с четными индексами. - Вывод результата:
Результат сохраняется в переменнойeven_index_elements
и выводится на экран с помощью функцииprint()
. - Результат выполнения:
После выполнения кода на экран будет выведен списокeven_index_elements
, содержащий элементы с четными индексами из спискаnumbers
.
Использование функции filter()
И в конце рассмотрим способ с использованием функции filter()
.
Функция
filter()
в Python принимает два аргумента: функцию и итерируемый объект. Она создает новый итератор, который фильтрует элементы итерируемого объекта, возвращая только те, для которых функция возвращаетTrue
. Подробнее о функции можете прочитать в нашей статье.
Пример кода
# Определение списка numbers
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Фильтрация элементов с четными индексами с использованием лямбда-функции
even_index_elements = filter(lambda x: numbers.index(x) % 2 == 0, numbers)
# Преобразование результатов в список
even_index_elements_list = list(even_index_elements)
# Вывод результата
print(even_index_elements_list) # Вывод: [1, 3, 5, 7, 9]
Объяснение кода
- Создаем список
numbers
, содержащий числа от 1 до 9. - Используем функцию
filter()
, чтобы отфильтровать элементы списка. - Для фильтрации используем лямбда-функцию
lambda x: numbers.index(x) % 2 == 0
. Эта функция принимает элемент спискаx
и проверяет, является ли индекс этого элемента четным. - Результат работы
filter()
преобразуем в список с помощью функцииlist()
и сохраняем в переменнойeven_index_elements_list
. - Выводим полученный список на экран.