0

次のコードがあります

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 _  _ 

_ _  _  

_ _  _

何が問題なのかわかりません。また、リストのリストを動的に作成する簡単な方法はありますか?

ありがとう!

4

1 に答える 1

1

llist同じlistオブジェクトを複数回繰り返して作成しています。各リストをllist個別の独立したオブジェクトにしたい場合(コンテンツを変更すると、1つのリストのみが変更されるように)、それぞれに異なるコピーを追加する必要があります。これを行う最も簡単な方法は、変更することです。

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)]
于 2011-08-07T02:39:44.377 に答える