← Все вопросы
Как сделать список квадратов чисел, кроме кратных 3?
7
Учусь на comprehension. Хочу из чисел от 1 до 10 получить их квадраты, но пропустить те числа, что делятся на 3. Как написать условие фильтра прямо в выражении?
2 ответа
14
✓ Принятый ответ — помог автору
Условие-фильтр ставится после for через if:
squares = [n**2 for n in range(1, 11) if n % 3 != 0]
print(squares)
# [1, 4, 16, 25, 49, 64, 100]
Не путайте это с тернарником: if ПОСЛЕ for — это фильтр (отбрасывает элементы), а value_a if cond else value_b ПЕРЕД for — выбор значения (ничего не отбрасывает). Здесь нужен именно фильтр, поэтому if идёт в конце.
Andrei Dolotov Разница между фильтрующим if и тернарником — частая путаница у новичков · 16 месяцев назад
4
[n*n for n in range(1, 11) if n % 3] — тоже работает, ведь n % 3 истинно для всех некратных трём.
Ваш ответ
Войдите, чтобы ответить на вопрос.