Python两个多维数组创建

时间:2013-07-02 12:37:53

标签: python multidimensional-array

我的程序使用下面的代码将一个名为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'

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

2 个答案:

答案 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 )