Как с помощью list comprehension создать двумерный список, где каждый элемент-это отдельное четное число из данного списка?

Вводятся строки, состоящие из целых чисел, разделенных пробелом, до тех пор, пока пользователь не выведет пустую строку. Все введенные строки необходимо сохранить в список. На основе этого списка, используя list comprehension, сформировать двумерный список, где каждый элемент будет представлять отдельное четное число. Результат вывести на экран. Я написал небольшой код, но он не работает должным образом.

rows = []
while True:
 row = input()
 if not row:
  break
rows.append(row)
nums = [[int(n) for n in row.split()] for row in rows]
print(*nums)


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

Автор решения: strawdog

В общем, все правильно, кроме прерывания цикла получения данных от пользователя (пустая строка c в переводом строки не равна None) и проверки на четность.

Cделать можно так:

rows = []
while True:
    row = input()
    if row=="":
        break
    rows.append(row)

l = [[int(x) for x in a.split() if int(x)%2==0] for a in rows]
print(l)

Здесь вы проходите по одномерному списку a.split(), проверяя, что число четное (not int(x)&1), и выводите как отдельный список. Вместо конструкции not int(x)&1 можете использовать классическую int(x)%2==0.

→ Ссылка