def neighbors(x):
def in_bounds(i, j, x):
return 0 <= i < len(x) and 0 <= j < len(x[0])
return [[x[i + di][j + dj] for di in (-1, 0, 1)
for dj in (-1, 0, 1)
if in_bounds(i + di, j + dj, x) and (di != 0 or dj != 0)]
for i in range(len(x))
for j in range(len(x[0]))]