Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
5252

Использование условий if-else в генераторе списков в Python

В Python генераторы списков — это мощный и удобный инструмент для создания списков на основе существующих итерируемых объектов. Однако, порой могут

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

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

Допустим, есть список чисел, и требуется создать новый список на основе этого, но с применением определенных условий к каждому элементу. Например, к каждому числу в списке нужно добавить 1, если число больше или равно определенного значения, или добавить 5, если число меньше этого значения.

Если попытаться реализовать это в генераторе списка, используя стандартный синтаксис условного оператора if-else, возникнет синтаксическая ошибка:

numbers = [22, 13, 45, 50, 98, 69, 43, 44, 1]
new_numbers = [n + 1 for n in numbers if n >= 45 else n + 5]

Это происходит потому, что Python ожидает, что после for в генераторе списка будет следовать условие if, а после него — еще одно выражение for или конец генератора. Однако в этом случае после if следует else, что вызывает ошибку.

Чтобы решить эту проблему, необходимо немного изменить подход к использованию if-else в генераторе списка. Вместо того, чтобы помещать условие после выражения for, нужно поместить его перед ним:

numbers = [22, 13, 45, 50, 98, 69, 43, 44, 1]
new_numbers = [n + 1 if n >= 45 else n + 5 for n in numbers]

Такой подход будет работать, потому что в этом случае Python интерпретирует if-else как тернарный оператор, который принимает три аргумента: условие, значение, если условие истинно, и значение, если условие ложно. Этот тернарный оператор возвращает одно из двух значений в зависимости от того, выполняется ли условие или нет, и затем это значение используется в генераторе списка.

На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

Добавить комментарий