在Python3中遍历二维对象列表
我试图在Python3.35中制作一个简单的基于2D平铺的游戏,但是我在使用多维数组时遇到了问题 我有一个16*10大小的区域,我用“地板”对象填充它,然后我尝试逐块迭代16*10区域的瓷砖,调用每个地板对象的绘制方法。这就是我遇到麻烦的地方。就我的一生而言,我不知道如何在迭代时调用对象 这是我用地板填充该区域的方式:在Python3中遍历二维对象列表,python,arrays,list,Python,Arrays,List,我试图在Python3.35中制作一个简单的基于2D平铺的游戏,但是我在使用多维数组时遇到了问题 我有一个16*10大小的区域,我用“地板”对象填充它,然后我尝试逐块迭代16*10区域的瓷砖,调用每个地板对象的绘制方法。这就是我遇到麻烦的地方。就我的一生而言,我不知道如何在迭代时调用对象 这是我用地板填充该区域的方式: self.tiles = [[],[]] self.tiles = [[floor() for x in range(self.width)] for x in range(se
self.tiles = [[],[]]
self.tiles = [[floor() for x in range(self.width)] for x in range(self.height)]
以下是我尝试过的:
for x in range(bar.width):
for y in range(bar.height):
bar.tiles[x][y].draw(x,y)
我还尝试:
for x in range(bar.width):
for y in range(bar.height):
bar.tiles[0][x][1][y].draw(x,y)
第一个版本尝试遍历列表维度(对于x),在到达2后超出范围。
第二个选项看起来很有希望,但给出了以下错误:
TypeError:“floor”对象不支持索引
有什么帮助吗?谢谢
已解决:
好的,第一行应该是
tiles = [[]]
在这之后,第一个版本开始工作。第1个版本有什么问题吗?在第2个版本中,您尝试获取bar.tiles[0][x]的第一个元素,这是一个地板。如果您能创建一个其他人可以测试的最小工作示例,这可能会有所帮助。@pal sch抱歉,我不是英语母语人士,所以我不知道这是否对任何人都有意义。版本1不起作用,因为它没有将x和y作为第一个和第二个索引,而是将x作为我要访问的维度的索引,这在变为2后会给我一个超出范围的错误。可能self.tiles=[[floor()表示范围内的x(self.width)]表示范围内的y(self.height)],而不是self.tiles=[[floor()表示范围内的x范围内x的(自宽)](自高)]?