Python: List.append () во всех индексах вместо нужного индекса [дубликат]

5
задан jamylak 31 March 2012 в 13:58
поделиться

2 ответа

Используя списки, вы можете сказать:

arr = [[None for x in range(6)] for y in range(6)]

Тогда вы будете arr[1][2] = 10 работать как ожидалось. Однако это не очень нормальная вещь. Для чего вы собираетесь использовать вложенные списки? Там может быть лучший способ. Например, работа с массивами намного проще с пакетом numpy.

14
ответ дан Cameron 26 August 2018 в 01:21
поделиться

@Cameron верна в предположении, что вы используете NumPy для работы с массивами числовых данных. И для второй части вашего вопроса, ~ Никлас Б. спорит с его предложением использовать defaultdict.

То, что не было охвачено, - это , почему [[None]*6]*6 ведет себя странно.

Ответ заключается в том, что [None]*6 создает список с шестью None s в нем (как вы ожидаете), но [list]*6 не делает шесть независимых копий list - it делает шесть копий ссылки в той же list.

Идиоматический Python имеет раздел, который может объяснить это лучше: «Другие языки имеют переменные - у Python есть имена» .

15
ответ дан Li-aung Yip 26 August 2018 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: