多次元配列である特定の要素を基準として、その上下左右に値を入れたい


#### 質問事項

下記のような **期待するデータ** にするにはどのような処理を組めば実現できますでしょうか？

[code]

    # 対象データ
    test_list = [
        ['.', '.', '.'],
        ['.', '#', '.'],
        ['.', '.', '.']
    ]
    
    
    # 期待するデータ
    test_list = [
        ['.', '#', '.'],
        ['#', '#', '#'],
        ['.', '#', '.']
    ]
    
[/code]

#### 試した処理

以下に自分が試した処理を記載します。  
ただ、これでは一部期待する値が代入されてないのと、余分なところに値が代入されてしまいます。

現段階では解決策が見つからなく、もしお分かりの方がいましたらご教示よろしくお願いいたします。

[code]

    # 対象データ
    test_list = [
        ['.', '.', '.'],
        ['.', '#', '.'],
        ['.', '.', '.']
    ]
    
    for i in range(len(test_list)):
        for j in range(len(test_list)):
            try:
                if test_list[i][j+1] == '#' or test_list[i][j-1] == '#' or test_list[i-1][j] == '#' or test_list[i+1][j] == '#':
                    test_list[i][j] = '#'
            except IndexError:
                pass
    print(test_list[0])
    print(test_list[1])
    print(test_list[2])
    
    # 出力結果
    ['.', '#', '.']
    ['#', '#', '.']
    ['#', '#', '.']
    
[/code]




scipyの`binary_dilation()`を使うと簡単です。  
[scipy.ndimage.binary_dilation — SciPy
Manual](https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.binary_dilation.html)

[code]

    import numpy as np
    from scipy.ndimage import binary_dilation
    
    def set_closs(lst, s):
        arr = np.array(lst)
        arr[binary_dilation(arr == s)] = s
        return arr.tolist()
    
[/code]

