← Все вопросы

Как сделать список квадратов чисел, кроме кратных 3?

Задан 16 месяцев назад331 просмотров2 ответа
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 истинно для всех некратных трём.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект