Как с помощью 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 шт):
В общем, все правильно, кроме прерывания цикла получения данных от пользователя (пустая строка 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.