Понимание списков с помощью if/else: синтаксис и использование
При работе с генераторами списков в Python встречается включение логики if/else для обработки условных операций. В этой статье рассматривается правильный синтаксис для таких сценариев.
Общая задача — создать список на основе исходной последовательности со следующим циклом for, содержащим конструкцию if/else:
results = [] for x in xs: results.append(f(x) if x is not None else '')
Этот код добавляет '' к списку результатов, если x равен None, и в противном случае вычисляет f(x). Желаемый результат также может быть достигнут с использованием понимания списка, но с необходимой корректировкой синтаксиса:
results = [f(x) if x is not None else '' for x in xs]
Ключевое отличие заключается в порядке предложений if и else в понимании списка. Правильный синтаксис требует размещения предложения if перед частью for, за которым следует предложение else.
В общем, синтаксис для понимания списка с условием if/else следующий:
[f(x) if condition else g(x) for x in sequence]
Для списков, включающих только условия if для фильтрации элементов из исходной последовательности, синтаксис это:
[f(x) for x in sequence if condition]
Обратите внимание, что условные выражения, используемые в синтаксисе if/else для списков, отличаются от конструкции if, используемой для фильтрация. Условные выражения позволяют выбирать между двумя выражениями на основе условия, аналогичного тернарному оператору ?:, встречающемуся в других языках. Например:
value = 123 print(value, 'is', 'even' if value % 2 == 0 else 'odd')
В этом примере выводится информация о том, является ли значение четным или нечетным, с использованием условного выражения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3