2015-10-31 6 views
0

Мне нужно заменить элемент матрицы. Я инициирую матрицу 4x4 с помощью команды M=4*[4*[0]].заменить матричный элемент python 3.4.3

Например, я хочу изменить элемент (0,1).

Для логики я пишу:

M[0,1]=1

и код ошибки говорит

TypeError: list indices must be integers, not tuple

Так что я стараюсь:

M[0][1]=1

но вместо изменения только (0,1) элемент, он меняет все «второй столбец» таким способом:

[[0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0]] 

В чем проблема? Как заменить один элемент?

ответ

0

Проблема заключается в том, что когда вы делаете что-то вроде этого:

M=4*[4*[0]] 

Вы не создавать различные списки, вы просто копируете ссылку на один и тот же список четыре раза. Поэтому, если вы внесете изменения в один из ваших подписок с вашей методологией создания этой матрицы 4x4, вы увидите ожидаемое поведение.

Официальный documentation будет объяснить это дальше, а

Вы должны сделать что-то вроде этого, чтобы добиться того, что вы ищете:

[[0 for x in range(4)] for x in range(4)] 

Теперь у вас есть четыре различных списков в вашем списке. Если вы внесете изменения, это будет только со ссылкой на указанный явный указатель.

0

создать массив вроде этого:

M = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] 

затем M[0][1] = 1 будет работать