0

我的程序使用下面的代码将一个名为的对象插入Field到一个动态创建的多维数组中(至少我认为它会被创建):

for x in range(self.width):
    for y in range(self.height):
            self.board_fields[x][y] = Field()

所以board_fields不是即时创建的,我得到了错误:

AttributeError:“Board”对象没有属性“board_fields”

在将值放入其中之前,我应该如何定义多维数组?

4

2 回答 2

2
self.board_fields = [[Field() for j in range(self.height)] for i in range(self.width)]
于 2013-07-02T12:43:13.663 回答
1

这些实际上并不是经典意义上的数组,而是列表的列表。虽然这在某些情况下是语义上的差异,但在这里它会影响可以在列表中进行分配的位置。append 语句为列表分配额外的内存,并将其参数分配给新的“槽”。

self.board_fields = []
for x in range( self.width ):
    board_fields_sub = []
    for y in range( self.height ):
        board_fields_sub.append( Field() )
    self.board_fields.append( board_fields_sub )
于 2013-07-02T12:40:04.967 回答