Инициализация 2D массива в Python

У меня проблема с инициализацией 2D массива в Python. Я хочу массив 6x6, я сделал

arr = [[None]*6]*6

Но когда я сделаю:

>>> arr[1][2]=10
>>> arr
[[None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None]]

Заметьте, я просто установил 1 элемент, и он «реплицировался» во всех строках В чем дело? Я думаю, что это связано с его ссылкой на тот же список, но как я могу это исправить?

Я полагал

for key, _ in algos.items():
    algoData[key] = []
    for i in range(0,6):
        algoData[key].append([])
        for j in range(0,6):
            algoData[key][i].append(None)

работает, но, кажется, долго просто инициализировать пустой массив 6x6, что, если я хочу массив 10000x10000, это будет очень неэффективно?

ОБНОВИТЬ

Можно ли также инициализировать словарь двумерных массивов? У меня есть словарь, как:

algos = { "FIFO": ..., "LRU": ..., "Random": ... }

Я хочу инициализировать словарь, как показано ниже:

algoData = { "FIFO": 2D arr, "LRU": 2D arr, "Random": 2D arr }

Ответы на вопрос(2)

Ваш ответ на вопрос