我需要替换矩阵的元素。
我通过命令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]]
问题是什么?我怎样才能只替换一个元素?
答案 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)]
现在,您的列表中有四个不同的列表。如果您进行更改,则仅参考您提供的显式索引。