Вот решение, использующее простое понимание с фрагментом, основанным на offset
:
>>> def expand_ones(old: list, offset: int) -> list:
... return [1 if any(
... old[max(0, i-offset):min(len(old), i+offset+1)]
... ) else 0 for i in range(len(old))]
...
>>> expand_ones([1, 0, 0, 0, 1, 0, 1, 0, 0], 1)
[1, 1, 0, 1, 1, 1, 1, 1, 0]
>>> expand_ones([1, 0, 0, 0, 1, 0, 1, 0, 0], 2)
[1, 1, 1, 1, 1, 1, 1, 1, 1]