擅长:python、mysql、java
<p>发生这种情况的原因是,列表的每一行都引用同一个对象,即名为<code>field</code>的列表。通过查看每行的<code>id</code>可以看到这一点。你会发现:</p>
<pre><code>id(fields[0]) == id(fields[1])
id(fields[0]) == id(fields[2])
</code></pre>
<p>等等。实际上每一行都是同一个对象。</p>
<p>您需要为每一行创建一个单独的列表:</p>
<pre><code>fields = []
for i in range(0,5):
field = []
for j in range(0,3):
x = 1
field.append(x)
fields.append(field)
</code></pre>
<p>现在你会看到:</p>
<pre><code>id(fields[0]) != id(fields[1])
</code></pre>
<p>等等。并且您修改单个元素的尝试将按照您的意愿进行。</p>
<p>但实际上,如果你想使用矩阵,那么你应该使用numpy。</p>