擅长:python、mysql、java
<p>在<code>get_board</code>函数中,您正在创建<code>colume</code>,然后一次又一次地将它附加到board中—但这并不是每次都创建一个新列表,而是同一个对象。你知道吗</p>
<pre><code>def get_board(self):
colume=['~']*60
for y in range(0,15):
self.board.append(colume)
return self.board
</code></pre>
<p>每次此函数执行<code>self.board.append(colume)</code>时,它都不会执行“将'colume'的内容添加到'自板,而是说“添加另一个对‘colume’的引用”自板,这样<code>self.board</code>中的每个条目都是相同的对象。您可以使用<code>id</code>来测试它,以获得对象的内部标识符。每个人都应该有所不同。当我尝试时:</p>
<pre><code>>>> board = list()
>>> colume=['~']*60
>>> for y in range(0,15):
... self.board.append(colume)
>>> id(board[0])
140498301136840
>>> id(board[1])
140498301136840
>>> id(board[2])
140498301136840
</code></pre>
<p>相反,如果您这样做:</p>
<pre><code>>>> board = list()
>>> for y in range(0,15):
... board.append(['~'] * 60)
>>> id(board[0])
140498301203376
>>> id(board[1])
140498301176432
>>> id(board[2])
140498301204456
</code></pre>
<p>所有不同的对象,更改其中一个不会更改板的其他“行”。你知道吗</p>