Генератор множества

Всем добрый вечер, стоит задача: Сгенерируйте множество уникальных значений от 8 до 50 включительно. Если элемент делится на 5, замените его на единицу, остальные оставьте как есть. Результат положите в generated_set. Тип переменной должен быть - set. Код такой:

generated_set = {x if x%5==0 else x==1 for x in range(8, 51)}
generated_set
{False, 10, 15, 20, 25, 30, 35, 40, 45, 50}

Но это же неверно. Подскажите, в чем ошибся? Мне кажется ответ должен быть таким:

{8, 9, 1, 11,..48, 49, 1}

Ответы (2 шт):

Автор решения: Antonio Logvinenkas
generated_set = {1 if x % 5 == 0 else x for x in range(8, 51)}
→ Ссылка
Автор решения: CrazyElf

Про то, что условие проверки должно быть противоположное, вам уже написали. А вот по поводу пропадающих чисел - прочитайте, что такое "множество". В множестве числа не могут повторяться, так же как и ключи в словаре. Если числа повторяются, из одинаковых остаётся только первое. Поэтому результат {8, 9, 1, 11,..48, 49, 1} с повторяющимися числами в множестве невозможен. Проверим на простейшем примере:

print({8, 9, 1, 11, 48, 49, 1})

Вывод:

{1, 8, 9, 11, 48, 49}

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

→ Ссылка