Учитывая входные данные
n = 3
m = [
[1, 2, 3],
[2, 3, 4],
[5, 6, 7]
]
, простой подход будет выглядеть примерно так:
p = [[-1] * (n+2), *([-1] + r + [-1] for r in m), [-1] * (n+2)]
, что дает
[[-1, -1, -1, -1, -1],
[-1, 1, 2, 3, -1],
[-1, 2, 3, 4, -1],
[-1, 5, 6, 7, -1],
[-1, -1, -1, -1, -1]]
, но если вы хотите сформировать его из индексов (i
и j
), тогда вы можете использовать составное логическое условие
[[-1 if not (i and j) or not(n+1-i and n+1-j) else m[i-1][j-1] for j in range(n+2)] for i in range(n+2)]
, которое упрощается до
[[-1 if not (i and j and n+1-i and n+1-j) else m[i-1][j-1] for j in range(n+2)] for i in range(n+2)]
, но, вероятно, проще использовать сравнения
[[m[i-1][j-1] if 1 < i < n and 1 < j < n else -1 for j in range(n+2)] for i in range(n+2)]
или с abs()
:
[[-1 if abs((n+1)/2 - i) == (n+1)/2 or abs((n+1)/2-j) == (n+1)/2 else m[i-1][j-1] for j in range(n+2)] for i in range(n+2)]
, который работает, устанавливая элемент на -1
, если расстояние до центра матрицы равно половине ширины матрицы.