Как можно убрать пробелы во вложенных циклах?

Есть вот такое задание:

Вводится натуральное число N (то есть, положительное, целое). Требуется создать двумерный (вложенный) список размером N x N элементов, состоящий из всех единиц, а затем, в последний столбец записать пятерки. Вывести этот список на экран в виде таблицы чисел, как показано в примере ниже. P.S. Будьте внимательны в конце строк пробелов быть не должно!

 Sample Input:  4
 Sample Output:
 1 1 1 5
 1 1 1 5
 1 1 1 5
 1 1 1 5

И моё решение этого задания: Без учёта P.S. Будьте внимательны в конце строк пробелов быть не должно! Вопрос такой: Как можно убрать пробелы в конце этой матрицы?

N = 4       # int(input())
s = []
for i in range(N):
    i = 1
    s.append([i] * N)

for x in s:
    for j in x:
        x[-1] = 5
        print(j, end=" ")
    print()

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

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

Для корректного вывода можно использовать join:

for line in s:
    print(' '.join(map(str, line)))

Можно вывод в одну строку сократить:

print('\n'.join(' '.join(map(str, line)) for line in s))

А x[-1] = 5 в вашем коде нужно вынести на уровень выше, т.е. в цикл for x in s


Однако я бы делал эту задачу как-то так:

N = 4       # int(input())

lst = [
    [1]*(N-1) + [5] for _ in range(N)
]

for line in lst:
    print(' '.join(map(str, line)))

А вот так выглядит однострочник:

print('\n'.join(' '.join(map(str, line)) for line in [[1]*(N-1)+[5] for _ in range(int(input()))]))
→ Ссылка
Автор решения: SergFSM

чисто в учебных целях:

l = [1]*N
s = [l]*N
l[N-1] = 5

for i in s:
    print(*i,sep=' ')
→ Ссылка
Автор решения: Qwertiy

По строчке на каждый пункт задания: tio.run

n = int(input())
a = [[1 for _ in range(n)] for _ in range(n)]
for x in a: x[-1] = -5
print("\n".join(" ".join(map(str, x)) for x in a))
→ Ссылка
Автор решения: Эникейщик

Без вложенных циклов и джойнов:

for x in s:
    x[-1] = 5
    print(*x)
→ Ссылка
Автор решения: Mack

А вот ещё один ответ с комментариями по теме "Вложенные циклы":

Автор: Den Romaniuk

→ Ссылка