У меня проблема с инициализацией двумерного массива в 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 }