Используя списки, вы можете сказать:
arr = [[None for x in range(6)] for y in range(6)]
Тогда вы будете arr[1][2] = 10
работать как ожидалось. Однако это не очень нормальная вещь. Для чего вы собираетесь использовать вложенные списки? Там может быть лучший способ. Например, работа с массивами намного проще с пакетом numpy.
@Cameron верна в предположении, что вы используете NumPy для работы с массивами числовых данных. И для второй части вашего вопроса, ~ Никлас Б. спорит с его предложением использовать defaultdict
.
То, что не было охвачено, - это , почему [[None]*6]*6
ведет себя странно.
Ответ заключается в том, что [None]*6
создает список с шестью None
s в нем (как вы ожидаете), но [list]*6
не делает шесть независимых копий list
- it делает шесть копий ссылки в той же list
.
Идиоматический Python имеет раздел, который может объяснить это лучше: «Другие языки имеют переменные - у Python есть имена» .