Дан список xs = [1, -2, 3, 0]. Что вернёт выражение [x * 2 for x in xs if x > 0]?

A[2, 6]
B[2, -4, 6, 0]
C[1, 3]
D[2, 6, 0]
Правильный ответ. В list comprehension условие после if фильтрует элементы, а выражение перед for вычисляется только для прошедших фильтр.

Разбор

В выражении [x * 2 for x in xs if x > 0] сначала перебираются элементы xs, затем применяется фильтр x > 0, и только для оставшихся элементов вычисляется x * 2. Элементы, не прошедшие условие, просто не попадают в результат.

Проверь себя · 1/3разбор после ответа
Нужно преобразовать user_ids = [1, -1, 2] в список строк только для положительных значений. Какой вариант обычно читается проще?
Тренировать Python в Telegram

Ещё вопросы по теме «Генераторы списков и встроенные функции»