Как в генератор списка добавить условие?
пытался сделать так, но не работает
a = [int(input()) for i in range(5) if i % 10 == 0]
то есть нужно добавить условие, чтобы в список добавлялись только числа делящиеся на 10 без остатка
Ответы (3 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Разделите чтение и фильтрацию:
a = [i for i in (int(input()) for _ in range(5)) if i % 10 == 0]
# ---------- ================================ --------------
# ^ читаем пять целых чисел ^
# | |
# -----------------------------------------------
# отбираем кратные десяти
Тоже самое по частям:
# читаем пять целых чисел
# важное: мы их не читаем. Генератор ничего не читает пока его не попросят.
g = (int(input()) for _ in range(5))
# просим генератор прочитать числа и фильтруем их
a = [i for i in g if i % 10 == 0]
Автор решения: extrn
→ Ссылка
Не очень наглядно, но за неимением отдельной синтаксической конструкции для связывания значения с переменной внутри генератора (вроде let в Haskell) можно использовать
a = [
x
for _ in range(5)
for x in [int(input())]
if x % 10 == 0
]
Автор решения: Danis
→ Ссылка
можно попробовать так, но это будет работать только на Python 3.8+
a = [n for i in range(5) if (n := int(input())) % 10 == 0]