C. Основы фильтрации

Переходим от построения списков к фильтрации значений.
Теперь ваша цель — выбрать из диапазона только те числа, которые делятся на заданное значение без остатка.

Вашему решению даны три переменные: ab и d.
Сформируйте список всех чисел, кратных d, лежащих в диапазоне от a до b включительно.

С помощью одного списочного выражения постройте список всех чисел от a до b, которые делятся на d без остатка.

Подсказка:
Первое число из диапазона кратное d можно найти вычислив (a + d - 1) // d * d или a + d - a % d.
Не забудьте поставить шаг d.

Примечание

В решении не должно быть ничего, кроме списочного выражения.

Пример

Ввод

a = 1
b = 5
d = 2

Вывод

[2, 4]

Ввод

a = -9
b = 15
d = 3

Вывод

[-9, -6, -3, 0, 3, 6, 9, 12, 15]

Решение

Задание на закрепление навыков написания кода с использованием python-way.

Наивный подход к решению предполагает что мы берем каждое число и проверяем делится ли оно нацело на d. Это решение, будучи сильно неэффективным проходит тест.

Чтобы подсказать нам, что проверки можно избежать совсем, нам дают подсказку. Из подсказки следует, что мы можем одним из двух способов определить начало диапазона, указать шаг и это все что от нас требуется.

Посмотреть код

Решение

Python
# неэффективное решение, которое проходит тест
[number for number in range(a, b + 1) if x % d == 0]

Решение

Python
# решение в d раз быстрее
[number for number in range(a + (d - a % d) % d, b + 1, d)]