更改 2D Char 列表中的元素

我想访问和更改我的 2D 字符列表中的单个字符。但是,当我更改一个时,它会更改整个列。为什么是这样?我究竟做错了什么?在第 31 行:我正在修改数组中的一个元素,但得到的结果与我想要和期望的结果不同。


下面是我的代码:


from random import *


class chessBoard:


    BOARD       = None

    BOARD_WIDTH = 8


    def __init__(self,W = 8):

       self.BOARD = []

       self.BOARD_WIDTH = W


       aRow = ['.'] * self.BOARD_WIDTH

       for curRow in range(self.BOARD_WIDTH):

           self.BOARD.append(aRow)



    def printBoard(self):

       for curRow in self.BOARD:

          print(curRow)



    def initialiseRandomQ(self,N):


       cords = []

       for ii in range(self.BOARD_WIDTH):

          for jj in range(self.BOARD_WIDTH):

              cords.append( [ii,jj] )


       shuffle(cords)


       self.BOARD[0][0] = '1'


       # for curQ in range(N):

       #     xx = cords[curQ][0]

       #     yy = cords[curQ][1]


       #     print(xx,yy)

       #     print(cords[curQ]) 


       #     self.BOARD[xx][yy] = 'Q'


#PROGRAM START#


N_QUEENS    = 2


myChessBoard = chessBoard()


myChessBoard.initialiseRandomQ(2)


myChessBoard.printBoard()


小唯快跑啊
浏览 179回答 1
1回答

白猪掌柜的

这个:class chessBoard:    BOARD       = None    BOARD_WIDTH = 8    def __init__(self,W = 8):       self.BOARD = []       self.BOARD_WIDTH = W       aRow = ['.'] * self.BOARD_WIDTH      # this is one list, it's a reference to data       for curRow in range(self.BOARD_WIDTH):           self.BOARD.append(aRow)          # adds the same reference 8 times您的列表包含 8 次相同的参考,如果您通过一个参考更改数据,则其他参考(至多相同)也会反映这一点。所有引用都指向相同的数据。用           self.BOARD.append(['.'] * self.BOARD_WIDTH) # add "unique" lists instead您可以检查id()的:# your version ( self.BOARD.append(aRow) )print(list(map(id,myChessBoard.BOARD))) [140415825494600, 140415825494600, 140415825494600, 140415825494600, 140415825494600, 140415825494600, 140415825494600, 140415825494600]# fixed version (self.BOARD.append(['.'] * self.BOARD_WIDTH))[140560309994568, 140560309994440, 140560309994376, 140560309994312,  140560309994248, 140560309994184, 140560309994120, 140560309994696]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python