<p>代码中还有另一个问题,而另一个答案没有解决。你知道吗</p>
<pre><code>>>> ['.'] * 5 * 5
['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.']
</code></pre>
<p>你的电路板初始化创建了一个平面列表,这大概不是你想要的。通常情况下,您会为此使用一个列表列表。但是,使用重载乘法是创建列表列表的一种非常糟糕的方法:</p>
<pre><code>>>> [['.'] * 5] * 5
[['.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.']]
</code></pre>
<p>因为现在:</p>
<pre><code>>>> board = _
>>> board[0][0] = 'hi'
>>> board
[['hi', '.', '.', '.', '.'], ['hi', '.', '.', '.', '.'], ['hi', '.', '.', '.', '.'], ['hi', '.', '.', '.', '.'], ['hi', '.', '.', '.', '.']]
</code></pre>
<p>每一行都是同一列表的副本。您应该更喜欢列表理解:</p>
<pre><code>>>> board = [['.' for row in range(5)] for col in range(5)]
>>> board
[['.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.']]
>>> board[0][0] = 'hi'
>>> board
[['hi', '.', '.', '.', '.'], ['.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.']]
</code></pre>