替换矩阵元素python 3.4.3

时间:2015-10-31 14:17:52

标签: python matrix replace

我需要替换矩阵的元素。 我通过命令M=4*[4*[0]]启动了一个4x4矩阵。

例如,我想更改(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]]

问题是什么?我怎样才能只替换一个元素?

2 个答案:

答案 0 :(得分:0)

像这样创建数组:

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

然后M[0][1] = 1将起作用

答案 1 :(得分:0)

问题是当你做这样的事情时:

M=4*[4*[0]]

您没有创建不同的列表,只是将对同一列表的引用复制四次。因此,如果您使用创建该4x4矩阵的方法对其中一个子列表进行更改,则会看到预期的行为。

官方documentation也将进一步解释

你应该做这样的事情来实现你想要的东西:

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

现在,您的列表中有四个不同的列表。如果您进行更改,则仅参考您提供的显式索引。

相关问题