擅长:python、mysql、java
<p>此位:</p>
<pre><code>for i in range(n):
List.append(listx)
</code></pre>
<p>将相同的列表(<code>listx</code>)添加到<code>List</code>三次。因此,当您将其更改为一个位置时,所有引用都会更改,因为它们都指向同一个列表</p>
<p>另外,作为旁注:不要用大写字母命名变量<code>List</code>,因为这会让其他人(和软件)认为它是一个类。而名称<code>list</code>当然更糟糕,因为这会掩盖类型<code>list</code>。提出有意义的名称,而不是像<code>playground</code>这样的泛型名称</p>
<p>创建<code>n</code>x<code>m</code>列表的更有效方法:</p>
<pre><code>playground = [[0] * m for _ in range(n)]
</code></pre>
<p>位<code>[0] * m</code>创建一个带有<code>m</code>个零的列表;这是因为数字不像列表那样被引用,零也不是同一变量的副本</p>
<p><code>for _ in range(n)</code>导致生成的列表填充这些列表中的<code>n</code>。<code>_</code>只是意味着你没有对来自<code>range()</code>的数字做任何事情,它只是在那里重复了很多次,<code>for</code>循环需要一些东西,或者是变量,或者是<code>_</code>“不在乎”</p>