Вы допустили две синтаксические ошибки в вашем понимании списка
В понимании списка значение для l oop не является выражением, поэтому вы не пишете двоеточие :
.
Вы хотите сохранить строку в списке понимания. Выражение, которое хранится в понимании списка, не является частью функции печати. Есть несколько способов построения строки. В этом случае f-строки являются хорошим решением.
Правильный синтаксис:
print(*[f"{a} {b}") for a in range(5) for b in range(3)], sep='\n')
Если понимание списка становится слишком длинным, я склонен разбивать его на несколько строк.
data = [
f"{a} {b}"
for a in range(5)
for b in range(3)
]
print(*data, sep="\n")