我有以下代码
class Board:
def __init__(self, size=7):
self._size = size
self._list, self._llist =[],[]
for i in range (self._size):
self._list.append('_ ')
for j in range(self._size):
self._llist.append(self._list)
def printboard(self):
for i in range(self._size):
for j in range(self._size):
print(self._llist[i][j], end = ' ')
print('\n')
def updateboard(self,x,y,letter):
self._llist[x][y]=letter
self.printboard()
board = Board(3)
board.updateboard(0,0,'c')
并打印
c _ _
c _ _
c _ _
而不是
c _ _
_ _ _
_ _ _
我看不出有什么问题。另外,有没有更简单的方法来动态创建列表?
谢谢!
答案 0 :(得分:1)
您正在使用相同的llist
对象创建list
,重复多次。如果您希望llist
中的每个列表都是一个独立的独立对象(这样,当您修改内容时,只更改了一个列表),那么您需要为每个列表附加一个不同的副本。最简单的方法是改变:
self._llist.append(self._list)
到
self._llist.append(list(self._list))
更简单的代码是:
self._list = ['_ '] * self._size
self._llist = [list(self._list) for i in range(self._size)]