Простым и эффективным способом генерации списков с заданными заранее условиями в Python являются циклы for, в теле которых прописывается код, генерирующий элемент списка и последовательно, при каждой итерации, добавляющий его в коллекцию.
Реализуется это так:
Изображение автора
Однако это далеко не самый лаконичный вариант реализации, и именно list comprehension позволяет осуществить подобные операции буквально в одной строке:
Изображение автора
Как можете видеть, код куда компактнее, а результат тот же.
Однако, это не все возможности list comprehension.
Конечно в качестве итерируемого объекта внутри цикла for можно использовать не только генерацию числел при помощи функции range(), это могут быть и другие коллекции.
Всё абсолютно так же, как в обычном цикле for, но в компактном виде.
Изображение Denis Doukhan с сайта Pixabay
Способ так же позволяет использовать проверку при помощи конструкции if – else, и тут есть некоторый нюанс на котором стоит заострить внимание.
Для наглядности приведем пример:
Изображение автора
Как видите, при помощи if мы проверяем остаток от деления каждого элемента на 2 и добавляем в список только четные числа.
Обратите внимание, if находится правее самого цикла for, что правильно именно в этом случае.
Следующий пример:
Изображение автора
В этом примере четные элементы мы так же добавляем в список без каких либо изменений, а вот нечетные в блоке else умножаем на 2, после чего они так же попадают в наш список.
Обратите внимание, что при наличии else, вся конструкция if – else пишется перед циклом.
Конечно, действия с элементами могут быть абсолютно любыми. Данный пример только призван продемонстрировать работу самого list comprehension.
(Изображение Christopher Ross с сайта Pixabay)
Мы используем cookie-файлы, чтобы улучшить сервисы для вас. Если ваш возраст менее 13 лет, настроить cookie-файлы должен ваш законный представитель. Больше информации
Нет комментариев