我的程序使用下面的代码将一个名为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'
在将值放入多维数组之前,我该如何定义它?
答案 0 :(得分:2)
self.board_fields = [[Field() for j in range(self.height)] for i in range(self.width)]
答案 1 :(得分:1)
这些不是传统意义上的数组,而是列表。虽然这在某些上下文中是语义差异,但在此它会影响列表分配的位置。 append语句为列表分配额外的内存,并将其参数分配给新的'slot'。
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 )