我做了矩阵5x3
field = []
fields = []
for i in range(0,5):
for j in range(0,3):
x = 1
field.append(x)
fields.append(field)
当我想改变一个领域
fields[2][2] = 0
我明白了:
fields[0][0] = 1
fields[0][1] = 1
fields[0][2] = **0**
fields[1][0] = 1
fields[1][1] = 1
fields[1][2] = **0**
fields[2][0] = 1
fields[2][1] = 1
fields[2][2] = **0**
fields[3][0] = 1
fields[3][1] = 1
fields[3][2] = **0**
fields[4][0] = 1
fields[4][1] = 1
fields[4][2] = **0**
相反,一个零钱我就得到五个
这是因为在所有行中都有对相同
field
的引用。你想要这个:
field
应该为每一行重置。所以你应该把它放在第一个循环里。现在你的fields[2][2] = 0
可以工作了。发生这种情况的原因是,列表的每一行都引用同一个对象,即名为
field
的列表。通过查看每行的id
可以看到这一点。你会发现:等等。实际上每一行都是同一个对象。
您需要为每一行创建一个单独的列表:
现在你会看到:
等等。并且您修改单个元素的尝试将按照您的意愿进行。
但实际上,如果你想使用矩阵,那么你应该使用numpy。
相关问题 更多 >
编程相关推荐