Вы должны использовать функцию numpy diag
.
import numpy as np
np.diag(l)
array([[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 2, 0],
[0, 0, 0, 3]])
При использовании чистого python инициализируйте пустой 2D-список и заполните диагональ после.
diag = [[0] * len(l) for _ in range(len(l))]
for i, e in enumerate(l):
diag[i][i] = e
diag
# [[0, 0, 0, 0], [0, 1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3]]